【问题标题】:PHP Namespace oddity folders ending with "t","s","n"以“t”、“s”、“n”结尾的 PHP 命名空间奇怪文件夹
【发布时间】:2016-11-01 22:50:24
【问题描述】:

我有一个有趣的问题,如果命名空间中的一个文件夹以“t”、“s”或“n”结尾,那么它后面有一个子文件夹,那么它就不会解析。

前:

namespace DDM\Components\Widget\List;

这导致:Parse error: syntax error, unexpected 'List' (T_LIST), expecting identifier (T_STRING) in <...filepath...>

以前面提到的其他 2 个字母结尾的文件夹也是如此。

我在 Windows 系统上,但文件是从 Debian (jessie) 盒子提供的,通过 nginx 和 PHP-FPM 运行 PHP 版本 5.6.27-0+deb8u1

更新

如果我尝试在整个命名空间前加上 \ 前缀,那么 phpstorm 不再将其识别为语法错误,但 php 编译器仍然给出与上述相同的错误。

任何“L”名子文件夹都有这个结果

正如 Jay 所指出的,List 是 PHP 保留字,但是使用任何“L”文件夹名称都会导致不同的错误:

Fatal error: Undefined constant 'DDM\Components\Widget\Lists' 

欢迎提出任何建议。

【问题讨论】:

    标签: php namespaces composer-php php-5.6


    【解决方案1】:

    这是因为List 是保留关键字,并且不允许保留关键字,即使在命名空间中也是如此。

    PHP Reserved Keywords

    【讨论】:

    • 任何以 L 开头的单词似乎都会给出相同的结果...Widget\Lothername;
    • @Chausser 命名空间仅在 PHP 5.3+ 中受支持。你的 PHP 版本正确吗?
    • 我正在运行 php 5.6
    • 我更新了问题,当使用不同的“L”字文件夹Fatal error: Undefined constant 'DDM\Components\Widget\Lists' 时,我实际上得到了一个不同的错误
    • 我不得不删除前导反斜杠,这解决了问题,但 List 作为保留字似乎确实是主要问题。谢谢
    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 2011-05-05
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2011-05-26
    相关资源
    最近更新 更多