提问人:VNI 提问时间:3/1/2015 更新时间:5/7/2015 访问量:52
使用数组定义类中方法的名称
use array to define name of methods within a class
问:
我想用这样的数组来命名这些方法
class MyClass {
private $_array = array();
public function __construct($array) {
$this->_array = $array; //this works!
}
//now, what i'm trying to do is:
foreach ($this->_array AS $methodName) {
public function $methodName.() {
//do something
}
}
}
正确的方法是什么?
答:
0赞
EntGriff
5/7/2015
#1
当你使用类并想要像动态方法这样的东西时,我认为魔术方法__call是最好的方法。
你可以很容易地做到这一点:
class MyClass {
private $_array = array();
public function __construct($array) {
$this->_array = $array; //this works!
}
public function __call($method, $args) {
if(in_array($method, $this->_array)){
print "Method $method called\n";
//or you can make like this: return call_user_func_array($method, $args);
}
}
}
$obj = new MyClass(array("one","two"));
$obj->two(); // OUTPUT: Method two called
评论