我有一个方法,它在参数中获取方法名称,并返回该方法(来自另一个类)。我没有找到如何在不执行它的情况下返回此方法。
这里有一个类#1的代码示例:
public function hello() {
return "Hello World!";
}
第2课的方法:
public function getPackageMethod($method) {
if (method_exists($this->package, $method)) {
return $this->package->$method; // This seems to return nothing
}
}
我想进入另一个类似的脚本:
$obj = new Obj();
$hello = $obj->getPackageMethod('hello');
$hello(); // Calling the method here. But currently got a error that $hello is not a function
我认为有可能这样做,但我想我忘记了一些事情。 感谢。
答案 0 :(得分:0)
当您返回initialSelection
时,您已经像属性一样运行它。您需要做的是保存方法,只在需要时运行它。
就像那样:
this.attrs.initialSelection
你可以这样做:
$this->package->$method
答案 1 :(得分:0)
您可以创建一个闭包,然后将类#1的实例绑定到闭包:
class salutations {
public function hello() {
return "Hello World!";
}
}
class methodFactory {
public function __construct($instance) {
$this->package = $instance;
}
public function getPackageMethod($method) {
if (method_exists($this->package, $method)) {
$f = function() use ($method) { return $this->package->{$method}(); };
$f->bindTo($this);
return $f;
}
}
}
$salutationsInstance = new salutations();
$obj = new methodFactory($salutationsInstance);
$hello = $obj->getPackageMethod('hello');
echo $hello();