不允许使用PHP语法
我想知道为什么下面的语法不能用于PHP。任何有洞察力的人也许都没有任何意义不允许使用PHP语法,php,Php,我想知道为什么下面的语法不能用于PHP。任何有洞察力的人也许都没有任何意义 ($this->getState($state))->getEvent('eventOpen')->attach($observeCallback); 基本上,getState($state)方法返回一个对象,该对象本身既有getEvent($eventName)又有attach($observerCallbackToAttach) 但是,这会抛出一个错误,不起作用 我是否违反了认为这是有效语法的规则
($this->getState($state))->getEvent('eventOpen')->attach($observeCallback);
基本上,getState($state)
方法返回一个对象,该对象本身既有getEvent($eventName)
又有attach($observerCallbackToAttach)
但是,这会抛出一个错误,不起作用
我是否违反了认为这是有效语法的规则?如果
getState
方法返回一个对象,该对象有两个方法getEvent
和attach
,那么要实现这一点,必须使用getEvent
/attach
返回相同的对象。当您执行getEvent()->attach()
操作时,您使用的是getEvent
的返回值,而不是getState
请注意->attach($observeCallback)
在->getEvent('eventOpen')
的结果上运行,而不是$this->getState($state)
的结果
检查getEvent()
方法返回的内容。要使其工作,需要返回$this代码>
否则,请澄清您的代码:
$tmp = $this->getState($state);
$tmp->getEvent('eventOpen');
$tmp->attach($observeCallback);
或者,将attach()
方法移动到由getEvent()
返回的对象中使用的类中。要使此操作起作用,您需要在方法中返回$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');
“我是否违反了认为这是有效语法的规则?”很明显,如果php抛出错误,那么您就是。getEvent()
method是否返回对象?返回一个对象,该对象**本身**既有getEvent($eventName)又有attach($observer callbacktoattach)
在较新版本的PHP中,我相信它是有效的。有趣的是,有多少次人们声称“这会抛出一个错误”,但对哪一个却讳莫如深。:-)这就是我最后做的。我只是想知道这在我看来是可以接受的。然而,我也意识到,我的命令行并不是使用PHP7,而是使用我可以轻松切换到该版本的web。除非我要在环境变量中更改PHP可执行文件,以查看PHP7的反应。