Php 为什么不是';这在某些装置上不起作用吗?(Dispatcher::Instance())->;someFunction();

Php 为什么不是';这在某些装置上不起作用吗?(Dispatcher::Instance())->;someFunction();,php,Php,我经常使用类似于(Dispatcher::Instance())->someFunction()的东西“实例化时的类成员访问权限” 为了回答您的问题,抛出此错误与此功能在php>=5.4之前不存在有关,因此需要关闭变量/实例化作为定义 我建议您在做出任何决定之前,先听取以下建议: 一般来说,当使用静态方法时,应该使用静态方法 这两个问题都与任何未传入的状态无关 作为对它的论证,它更多地与抽象的概念有关 涉及的类,而不是一个具体的实例。那个 也就是说,功能与事物的概念有关,而不是与事物本身有关

我经常使用类似于
(Dispatcher::Instance())->someFunction()的东西
事实证明,在某些PHP(PHP5?)安装中止时,这似乎不起作用:

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'
我知道,我可以通过使用变量来规避这个问题,但我想知道为什么会出现错误。在发行说明中找不到任何内容。我也不知道该搜索什么。有人能帮忙吗?

这称为“实例化时的类成员访问”,包含在PHP v5.4.0版本中。()

它允许实例化示例中显示的类(无需将其分配给变量):

理想情况下,在堆栈交换网络中的任何地方,调用这些方法似乎更有效

等等。只需搜索->“实例化时的类成员访问权限”

为了回答您的问题,抛出此错误与此功能在
php>=5.4
之前不存在有关,因此需要关闭变量/实例化
作为定义


我建议您在做出任何决定之前,先听取以下建议:

一般来说,当使用静态方法时,应该使用静态方法 这两个问题都与任何未传入的状态无关 作为对它的论证,它更多地与抽象的概念有关 涉及的类,而不是一个具体的实例。那个 也就是说,功能与事物的概念有关,而不是与事物本身有关 事情本身


在这种情况下,您是否可以不删除
()
而只执行
Dispatcher::instance()->someFunction()?我可以看出,如果你在做
(new Instance())->someMethod()
,那么你需要
()
包装。学到了一些新东西。看这里,这似乎是正确的方向。在我的服务器上使用PHP5.5.9仍然会失败,但是我现在知道了应该做什么。谢谢你。@christian,真奇怪!你已经确认了你的版本?
(Dispatcher::Instance())->someFunction();