为什么在PHP中无法实现这一点?我希望能够为特定对象动态创建一个函数。
$a = 'a';
$tokenMapper->tokenJoinHistories = function($a) {
echo $a;
};
$tokenMapper->tokenJoinHistories($a);
答案 0 :(得分:2)
PHP尝试匹配原始类中未定义的名为“tokenJoinHistories”的实例方法
你必须改为
$anon_func = $tokenMapper->tokenJoinHistories;
$anon_func($a);
阅读文档here,尤其是评论部分。
答案 1 :(得分:0)
使用$obj->foo()
调用方法,但是您希望将属性称为函数/方法。这只会混淆解析器,因为他没有找到名为foo()
的方法,但他不能指望任何属性都是可调用的。
call_user_func($tokenMapper->tokenJoinHistories, $a);
或者像
那样扩展你的映射器class Bar {
public function __call ($name, $args) {
if (isset($this->$name) && is_callable($this->$name)) {
return call_user_func_array($this->$name, $args);
} else {
throw new Exception("Undefined method '$name'");
}
}
}
(这个快速编写的例子中可能存在一些问题)