Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP 5.4新对象->;调用方法_Php_Object_Methods - Fatal编程技术网

PHP 5.4新对象->;调用方法

PHP 5.4新对象->;调用方法,php,object,methods,Php,Object,Methods,我认为在PHP5.4中这是可能的 (new object())->method(); 但是当对象和方法都存储在类变量中时,我遇到了问题,我尝试了以下方法: new $this->object($this->params)->$this->method(); new ($this->object($this->params))->$this->method(); new $this->object($this->params)-&

我认为在PHP5.4中这是可能的

(new object())->method();
但是当对象和方法都存储在类变量中时,我遇到了问题,我尝试了以下方法:

new $this->object($this->params)->$this->method();
new ($this->object($this->params))->$this->method();
new $this->object($this->params)->{$this->method}();
除非我弄错了,否则我似乎无法让它工作,而且它无法完成。谢谢您

基于此测试()(更新的测试),如果您将
新对象()
包装在它自己的
()
中,并将方法名称包装在
{}
中,它应该可以工作。因为返回对象的是表达式
newobject()
,而不仅仅是对构造函数
object()
的调用,所以需要将该表达式包装为
()

这是超级复杂的。如果你有机会重新思考这个问题,我会这样做

public $object = 'ClassName';
public $method = 'method';

// Called as:
(new $this->object($this->params))->{$this->method}();
下面是一个使用
ArrayIterator::valid()的示例:


这是一些可怕的代码,isI理解它很难理解,但这段代码没有在生产中使用。这没关系,因为它可能会在未来出现。是的,我理解这一点,我只是在胡闹而已,通过尝试和错误学习,谢谢。@ShaShads检查更新的示例。它应该真的会成功,就像在生产中一样疯狂。谢谢你,这帮了忙。
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)