使用数组定义类中方法的名称

use array to define name of methods within a class

提问人:VNI 提问时间:3/1/2015 更新时间:5/7/2015 访问量:52

问:

我想用这样的数组来命名这些方法

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
        }
    }
}

正确的方法是什么?

Arrays 方法

评论


答:

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