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

时间:2016-03-22 08:46:21

标签: php constants

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

<?php
     define('IS_ARRAY', 1);
     echo IS_ARRAY;

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

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

{{1}}

结果:1​​

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

4 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

import xml.etree.ElementTree as ET tree = ET.parse('test.xml') root = tree.getroot() print ET.tostring(root, encoding="UTF-8") 是PHP中的保留关键字。您不能将任何reserved个单词用作常量,类名,函数或方法名,因为这些单词在PHP中具有特殊含义。使用任何其他名称作为常量。

答案 2 :(得分:2)

您可以明确定义&#34; EMPTY&#34;作为常数。问题是你无法直接使用它。

<?php 
 define("EMPTY", "valueForEmpty");
 echo EMPTY; // Wont work because empty is a keyword and PHP doesn't know that you mean the constant.

 echo constant("EMPTY"); // Works

答案 3 :(得分:1)

请注意,保留关键字也不区分大小写,并且不能使用 runkit_function_redefine();

将它们定义为常量或重新定义

您可以找到here详尽的保留关键字列表