声明
PHP5 中常量使用 define()
函数声明。常量是一个简单值的标识符,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。
常量默认为大小写敏感,也就是常量标识符需要全部使用大写字母,如:FOO,FUNCT 等等。
define()语法:
fefine(name, value, case_insensitive = false)
参数:
- $name:必须。 常量名称,即标志符。
- $value:必须。 常量的值。
- $case_insensitive :可选。 如果设置为 TRUE,该常量则大小写不敏感(默认敏感)。
我们利用 fefine()
声明一个常量,然后打印出来。
# 声明
define("FOO", "Hello,define!");
# 使用
echo FOO;//Hello,define!
使用时无需加 $
符号即可识别。需要注意的是常量 无法改变值 与 再次同名赋值。
# 声明
define("FOO", "Hello,define!");
# 尝试赋值
FOO = true;
# 使用
echo FOO;//Error
全局作用域
在 PHP5 中定义的常量拥有全局作用域,只要你定义在外部其他作用域就可以访问到。
# 声明
define("FOO", "Hello,function!");
function fun(){
echo FOO;//Hello,function!
}
# 访问
fun();
如果你在 函数内定义 常量,那么外部无法访问:
# 声明
function fun(){
define("FOO", "Hello,function!");
}
# 访问
echo FOO;//Error
因为函数 fun
没有得到执行,所以 define()
也得不到执行,常量 FOO
也就没有声明。
说白了,就是 编译型 / 解释型语言的问题 ,你看下面代码:
# 声明
function fun(){
define("FOO", "Hello,function!");
}
# 先执行后输出
fun();
echo FOO;//Hello,function!