# 基本语法

常量是一个简单值的标识符。如同其名称所暗示的，在脚本执行期间该值不能改变，除了所谓的魔术常量，它们其实不是常量。常量默认为大小写敏感，传统上常量标识符总是大写的。常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始，后面跟着任何字母，数字或下划线。如果使用了一个未定义的常量， PHP 假定想要的是该常量本身的名字，如同用字符串调用它一样。此时将发出一个 `E_NOTICE` 级的错误。

常量和变量有如下不同：

* 常量前面没有美元符号 `$` 。
* 常量只能用 `define()` 函数或 `const` 关键字定义，而不能通过赋值语句。
* 常量可以不用理会变量的作用域而在任何地方定义和访问。
* 常量一旦定义就不能被重新定义或者取消定义。
* 常量的值只能是标量，数组或资源。

```php
<?php

define('FOO', 2 + 3);
define('BAR', <<<EOT
                 bar
                 EOT);
define('BAZ', [true, false]);
define('QUX', tmpfile());
var_dump(FOO); // int(5)
var_dump(BAR); // string(3) "bar"
var_dump(BAZ); // array(2) { [0]=> bool(true) [1]=> bool(false) }
var_dump(QUX); // resource(4) of type (stream)

```

也可以使用 `const` 关键字定义常量，但必须处于最顶端的作用区域。

```php
<?php

const FOO = 'foo';
if (true) {
    const BAR = 'bar';
}
// PHP Parse error:  syntax error, unexpected 'const' (T_CONST).

```

