我有一个基类,所有操作都在其中。在其中一个类方法中,我创建了另一个自己的类的实例,这是一个帮助....在我的基类中我有一个名为log
的方法 - 这个方法的目的是显而易见的。那么有可能以某种方式向助手类传递一些直接引用基类日志方法吗?
目前我有这样的事情:
class trololo {
public function log(){
echo __CLASS__ . ' => ' . __FUNCTION__ ."<br>\n";
}
private function three(){}
}
class test {
function __construct(&$data){
$data->log();
}
}
class lol extends trololo {
private function one(){}
protected function two(){}
public function four(){
$this->log();
new test($this);
}
}
$lol = new lol;
$lol->four();
但是你可以看到我将完整的lol对象传递给测试类,但是可能只能传递log
方法吗?
答案 0 :(得分:4)
您无法将方法与其对象分开。但是,您可以传递callable
:
class Foo {
public function bar() { echo 'bar'; }
}
$ref = array(new Foo, 'bar');
$ref();
自PHP 5.4起作用,在您需要call_user_func($ref)
而不是$ref()
之前。
或者,使用匿名函数:
class Foo {
public function bar() { echo 'bar'; }
}
$foo = new Foo;
$ref = function () use ($foo) { return $foo->bar(); };
$ref();
答案 1 :(得分:-1)
将功能更改为静态:
public static function log(){
echo __CLASS__ . ' => ' . __FUNCTION__ ."<br>\n";
}
所以你可以这样称呼它:
trololo::log();