if内部的PHP常量

PHP Constant inside IF

本问题已经有最佳答案,请猛点这里访问。

在PHP中遇到常量问题,想知道是否有人可以解释:

这作品

1
2
3
const _ROOT = 'd:/aphp/www';

echo"r="._ROOT;

像这样:

1
2
3
4
if (true)
        define('_ROOT','d:/aphp/www');

echo"r="._ROOT;

但这会产生错误:分析错误:语法错误,意外的t常量

1
2
3
4
if (true)
    const _ROOT = 'd:/aphp/www';

echo"r="._ROOT;

我使用的是php 5.3.2


那是因为……

必须在顶级作用域中声明const关键字

从php文档

Note: As opposed to defining constants using define(), constants
defined using the const keyword must be declared at the top-level
scope because they are defined at compile-time. This means that they
cannot be declared inside functions, loops or if statements.

Source