【发布时间】:2016-12-28 18:28:02
【问题描述】:
需要动态地将方法附加到类。
我的代码:
<?php
class stdClass1 {
public function __call($method, $arguments) {
return call_user_func_array(Closure::bind($this->$method, $this, get_called_class()), $arguments);
}
}
class stdClass2 {
function stdRunMethod() {
$obj = new stdClass1();
$obj->test = function() {
echo 'a simple function';
};
$obj->test();
$obj2 = new stdClass1();
$obj2->test();
}
}
$obj = new stdClass2();
$obj->stdRunMethod();
问题:为什么test 方法只对stdClass1 类的第一个实例运行?如何为所有新实例附加此方法?
【问题讨论】:
-
因为您只将函数分配给第一个对象的属性。修改对象时,不会修改类。
-
是的。这样我可以向类实例添加方法。但我需要将方法直接动态添加到类中。有可能吗?
-
也许使用反射是可能的。或者,也许您可以创建一个容器以在对象创建后添加属性。
标签: php