【发布时间】:2015-11-02 14:49:28
【问题描述】:
我刚刚将一个正常工作的 Symfony 安装从一个文件夹移动到另一个文件夹。现在我得到错误
FatalErrorException: Parse Error: syntax error, unexpected 'CLASS' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in ...
我知道 Classname::CLASS 方法是在 PHP 5.5 中实现的。但我使用 PHP 5.4,直到今天一切正常。 CLASS 方法用在供应商目录中的几个类中,例如在需要的 Gos\Bundle\WebSocketBundle 中。我不知道我是怎么把这个正在运行的系统移动到另一个目录而导致它崩溃的。
【问题讨论】:
-
这是一个措辞相当混乱的问题。您能否将 PHP 文档链接到您认为 PHP 5.5 中新增静态引用的地方?据我所知,它至少从 5.3 开始就可用——如果不是更早的话。您对“方法”一词的使用在这里也令人困惑。您是指编程术语方法(在 Class 中定义的函数)吗?还是非编程的特定术语(做某事的过程)?
-
@HPierce PHP 5.5 添加了一个特殊的“类常量”,您可以像
\MyNamespace\MyClass::class一样访问它,然后它会返回"MyNamespace\MyClass"。 PHP doc entry -
那么这里的问题到底是什么?是的,
::class功能在 PHP 5.4 中不存在,所以如果您的依赖项之一使用它,它将无法工作。也许您在使用此功能的新目录中使用了其中一个捆绑包的较新版本? -
最后我找到了使用 ::class 的捆绑包仅在缓存中有效的解决方案。清除缓存并使用 PHP 5.4 而不是 5.6 后它崩溃了