当我尝试定义名为DEFAULT
的常量时,我收到错误。这是为什么?
<?php
define('DEFAULT', true);
var_dump(DEFAULT);
// or
class Test {
const DEFAULT = true;
}
var_dump(Test::DEFAULT);
这会导致以下错误:
解析错误:语法错误,第X行上的意外'DEFAULT'(T_DEFAULT)
答案 0 :(得分:8)
default
是PHP中的保留语言关键字。它用于switch
块中的默认选项。
所以不,你不能在define
声明中使用它。
答案 1 :(得分:5)
这是不允许的,因为DEFAULT
或default
(情况无关紧要)是一个保留字。它用于switch
块:
switch( $x )
{
case 1: echo $x; break;
case 2: echo $x; break;
case 3: echo $x; break;
default: echo $x; break;
}
PHP中保留字的
答案 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开始,允许将其用于常量。