php 语法错误,意外的“Interface”(T_INTERFACE),需要标识符(T_STRING)[重复]

yc0p9oo0  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(301)

此问题在此处已有答案

PHP reserved keywords allowed in namespace? (public, private, default)(2个答案)
4天前关闭。
我有下面的PHP(7.1)代码。在执行该代码时,我得到下面的错误:
解析错误:语法错误,第7行代码中出现意外的“Interface”(T_INTERFACE),需要标识符(T_STRING)或函数(T_FUNCTION)或常量(T_CONST)或\(T_NS_SEPARATOR)

<?php

declare(strict_types=1);

namespace CommandBus\Handler;

use Interface\{
    Parser\ZipFilenameParserInterface,
    Query\UpdateLettersQueryInterface,
};

final class ZipFileGeneratorCommandHandler
{
    // the rest of the code
}

谷歌没有多大帮助。我不能ChatGPT这个东西,因为我没有访问ChatGPT:(。

qxsslcnc

qxsslcnc1#

抱歉,这确实是记录在案的行为,只是不在手册中:参见https://stackoverflow.com/a/75887334/13508https://wiki.php.net/rfc/namespaced_names_as_token
你可能在PHP语言parser. Interface中发现了一个特殊情况,但是在允许/不允许的用法列表中没有明确提到:
以下单词不能用作常量、类名或函数名。但是,它们可以用作类、接口和trait的属性、常量和方法名,除非class不能用作常量名。
这些是有效的:

use NotInterface\{
    Parser\ZipFilenameParserInterface,
    Query\UpdateLettersQueryInterface,
};

Demo

use Interface\Parser\ZipFilenameParserInterface;
use Interface\Query\UpdateLettersQueryInterface;

Demo
这不是:

use Interface\{
    Parser\ZipFilenameParserInterface,
    Query\UpdateLettersQueryInterface,
};

Demo

相关问题