我想知道为什么下面的语法不适用于PHP。任何有洞察力的人也许没有任何意义或其他。
($this->getState($state))->getEvent('eventOpen')->attach($observeCallback);
基本上getState($state)
方法会返回一个本身同时包含getEvent($eventName)
和attach($observerCallbackToAttach)
的对象。
但是,这会引发错误并且无法正常工作。
我是否打破了认为这是一种有效语法的规则?
答案 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个方法getEvent
和attach
的对象,那么为了完成这项工作,您必须使用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');