php - 为什么不能定义一个名为EMPTY的常量

zoz*_*ozo 2 php constants

所以......这更像是一种好奇心,而不是一个真正的问题.我不明白这个:

<?php
     define('EMPTY', 1);
     echo EMPTY;
Run Code Online (Sandbox Code Playgroud)

结果:解析错误:语法错误,意外';',期待'(''

我的第一个想法是空为空函数保留.但后来我尝试了:

<?php
     define('IS_ARRAY', 1);
     echo IS_ARRAY;
Run Code Online (Sandbox Code Playgroud)

结果:1

所以...我不明白.为什么空不能用作常数,例如is_array,die等等.

dec*_*eze 9

empty它不是一个函数,而是一个语言构造(更像是一个运算符而不是一个函数),这意味着它在解析时由解析器解析,而不是由运行时解析.它是一个保留关键字,你不能将它用于任何你自己的函数名称或常量.

原因empty不能是常规功能,因为它的行为不同.empty($undefined)首先解决$undefined,抛出一个错误,然后传递nullempty; 这正是empty应该防止的情况,所以它不能通过正常的函数调用规则来播放.