我想知道是否有一种方法可以在运行时将新方法附加到类中,在 php.ini 中。 我的意思是,不是在实例级别,而是直接在类中,以便所有新创建的实例都有这个新方法。 这样的事情可以用反射来完成吗?
谢谢
最佳答案
是的,你可以。
下面是在 php 5.4.x 中运行时创建方法的方法。
匿名函数由 5.3.x 开始的 Closure 类表示。从 5.4.x 开始,它添加了一个 Closure::bind。将匿名函数绑定(bind)到特定对象或类的静态方法。
例子:
class Foo {
private $methods = array();
public function addBar() {
$barFunc = function () {
var_dump($this->methods);
};
$this->methods['bar'] = \Closure::bind($barFunc, $this, get_class());
}
function __call($method, $args) {
if(is_callable($this->methods[$method]))
{
return call_user_func_array($this->methods[$method], $args);
}
}
}
$foo = new Foo;
$foo->addBar();
$foo->bar();
关于php 在运行时创建类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985926/