不允许使用PHP语法

时间:2016-06-03 12:51:05

标签: php

我想知道为什么下面的语法不适用于PHP。任何有洞察力的人也许没有任何意义或其他。

($this->getState($state))->getEvent('eventOpen')->attach($observeCallback);

基本上getState($state)方法会返回一个本身同时包含getEvent($eventName)attach($observerCallbackToAttach)的对象。

但是,这会引发错误并且无法正常工作。

我是否打破了认为这是一种有效语法的规则?

3 个答案:

答案 0 :(得分:6)

请注意,->attach($observeCallback)的{​​em>结果运行->getEvent('eventOpen') - 不是$this->getState($state)的结果。

检查getEvent()方法返回的内容。为此,需要return $this;

否则,请澄清您的代码:

$tmp = $this->getState($state);
$tmp->getEvent('eventOpen');
$tmp->attach($observeCallback);

或者,将attach()方法移动到getEvent()

返回的对象中使用的类

答案 1 :(得分:2)

如果getState方法返回一个包含2个方法getEventattach的对象,那么为了完成这项工作,您必须使用getEvent / {{返回相同的对象1}}。执行attach后,您使用getEvent()->attach()而不是getEvent的返回值。

答案 2 :(得分:0)

要做到这一点,您要做的就是在方法中返回$this

class Something
{
    function setState($state)
    {
        if ($state != '') {
            $this->state = $state;
        }
        return $this;
    }

    function setUberState($uberState)
    {
        if ($uberState != '') {
            $this->uberState = $uberState;
        }
        return $this;
    }
}

使用上述课程,您应该可以:

$something = new Something();
$object = $something->setState('state')->setUberState('uberstate');