<?php
namespace Random\Namespace;

当我在3v4l.org(https://3v4l.org/kk0bD)上运行这段代码时,它在PHP 8.0.0+上运行得很好,但在PHP&gt;=5.4.0和PHP&lt;8.0.0上,我收到以下错误:

Parse error: syntax error, unexpected 'Namespace' (T_NAMESPACE), expecting identifier (T_STRING)

我不明白.从PHP5.3.0开始,名称空间就在PHP中出现了.

有什么主意吗?

推荐答案

在PHP8.0之前,名称空间中的每个组件都被视为不同的名称,并且每个部分都不能使用list of reserved keywords个名称中的任何一个.

在这种情况下,名字空间Random\Namespace包含作为其组件之一的保留名称"名字空间",因此被解析器拒绝.

在PHP8.0,a change to the parser was introduced中,整个名称空间名称被视为单个标记(作为在尽可能少的上下文中保留关键字的一般趋势的一部分).因此,对于PHP8.x,名称被一次性解析为"Random\Namesspace",这是不保留的.

链接提案指出,关键字namespace仍然保留在名称空间名称的第start处,因为它在某些上下文中会造成歧义,因此namespace Namespace\Random;仍然是一个错误.

Php相关问答推荐

WooCommerce拆分运输包裹上的商品数量增加运输成本

Laravel中的通配符Undot数组

为什么注册SIGHUP的处理程序函数会阻止在PHP CLI中等待输入时点击X关闭Xterm窗口?""

MariaDB 11.3.2+PHP:服务器向客户端发送未知的字符集(0).请向开发人员报告

在内部API请求之后,在响应客户端之前,是否忘记了PHP中的Header()?

按与WooCommerce管理顺序列表中的特定字符串不匹配的特定元值筛选订单

如何使用定制的StateProvider设置JsonLd@上下文?

如果WooCommerce购物车在 checkout 时被清空,请重定向至store 页面

向WooCommerce管理订单总额添加自定义总额行

使用 PHP,我可以将 foreach 语句放入瞬态中吗?

Woocommerce 临时购物车税未根据第一个请求正确计算

.htaccess 重写规则问题

将 WooCommerce 0 销售价格替换为自定义文本,并保留常规价格删除线

在 WooCommerce 我的帐户自定义部分显示未购买的产品

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

Composer自动加载器重复了子类的类文件路径

Symfony 迁移判断器在我的工作中失控

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?

PHP 中的正则表达式,具有字符范围,但不包括特定字符

Php 的新WeakMap - 枚举曾经被垃圾收集过吗?