PHP中不允许使用常量名称DEFAULT吗?

时间:2016-10-12 21:07:52

标签: php constants

当我尝试定义名为DEFAULT的常量时,我​​收到错误。这是为什么?

<?php
define('DEFAULT', true);
var_dump(DEFAULT);
// or
class Test {
    const DEFAULT = true;
}
var_dump(Test::DEFAULT);

这会导致以下错误:

  

解析错误:语法错误,第X行上的意外'DEFAULT'(T_DEFAULT)

5 个答案:

答案 0 :(得分:8)

default是PHP中的保留语言关键字。它用于switch块中的默认选项。

所以不,你不能在define声明中使用它。

答案 1 :(得分:5)

这是不允许的,因为DEFAULTdefault(情况无关紧要)是一个保留字。它用于switch块:

switch( $x )
{
    case 1: echo $x; break;
    case 2: echo $x; break;
    case 3: echo $x; break;
    default: echo $x; break;
}
PHP中保留字的

Here is a list

答案 2 :(得分:4)

人们在这里写道default是一个保留字,你不应该使用等等 - 这是真的。但您仍然可以使用constant函数访问名为'DEFAULT'的常量:

define('DEFAULT', 'Some value');
var_dump(constant('DEFAULT'));

更进一步:您可以根据需要命名常量,甚至

define('#1', 'Number ONE');
define('-100', 'Hundred!');
define('while', 'It is WHILE!');

问题是php会处理这些常数&#39;代码中的名称不是您期望的。 这就是为什么我(和其他程序员)不推荐你使用这种方法的原因。

答案 3 :(得分:0)

这是正确的。这是一个保留的关键字。您可以在手册here中找到它。

在关键字页面上,您可以找到以下信息:

  

这些词在PHP中具有特殊含义。其中一些代表了一些东西   看起来像函数,有些看起来像常量,等等 - 但是   他们不是,真的:他们是语言结构。你不能使用任何   以下单词作为常量,类名,函数或方法   名。使用它们作为变量名通常是可以的,但可能会导致   混乱。

答案 4 :(得分:-1)

从PHP 7.0开始,允许将其用于常量。

示例:https://3v4l.org/8Hi3W