このテスト ( http://codepad.viper-7.com/mcPvpG ) (更新されたテスト) に基づいてnew object()
、 を独自の()
でラップし、メソッド名を でラップすると動作するはずです{}
。new object()
単なるコンストラクターの呼び出しではなく、オブジェクトを返すのは式であるためobject()
、その式は としてラップする必要があります()
。
ただし、これは非常に複雑です。このことを再考する機会があれば、私はそうしたいと思います。
public $object = 'ClassName';
public $method = 'method';
// Called as:
(new $this->object($this->params))->{$this->method}();
を使用した例を次に示しArrayIterator::valid()
ます。
class instantiator {
public $object = "ArrayIterator";
public $method = "valid";
public $params = array(1,2,3);
public function do_it() {
var_dump((new $this->object($this->params))->{$this->method}());
}
}
$i = new instantiator();
$i->do_it();
// Prints bool(true)