Practical PHP Programming

常量

如果你为了方便,在脚本中设了一个变量,之后不再进行改变的话,那么你就应该用一个常量。常量和变量一样,只是它们一旦被定义,就不能取消或更改——正如“常量”这个名字一样。在很多语言中,常量要比变量快,所以才被推荐使用,在PHP中却不是这样的。虽然使用常量要比变量稍微快一点,但是主要原因还在下面:常量前面不用添加美元符号,易于同其他变量进行区别;此外,常量自动是全局变量,比变量的作用范围要大。

要设置常量,需要用define()函数,它需要两个参数,第一个是要设置的常量名,第二个是要常量将要被赋予的值。例如,下面的例子是将time()函数的返回值赋值给常量CURRENT_TIME,并将其打印输出:

define("CURRENT_TIME", time());
print CURRENT_TIME;

注意,我们设置的不是$CURRENT_TIME,也不是Current_Time,常量同变量一样都是大小写敏感的,但是却不用美元符号开头。当然,你也可以给define()传递第三个参数true将常量设置为大小写不敏感的:

define("CURRENT_TIME", time(), true);
print Current_TiMe;

对常量而言,有两个很有用的函数,分别是defined()constant()defined()函数相当于变量里面的isset(),如果传递进去的常量被定义的话则返回true,例如:

define("CURRENT_TIME", time(), true);
if (defined("CURRENT_time")) {
    /// etc
}

注意,传递给defined()的常量名需要加引号。

最后,constant()看起来可能有些累赘,但是它返回常量的值这点却是很有用的。我知道你可能想说,像print MY_CONSTANT;这样直接打印出来不久行了吗?但是,万一你不知道常量的名呢?如果你用的是变量,你可以使用可变变量,但是在常量的情况下是无效的,因此才有了constant()这个函数。

 <?php
    define("Current_Time", time(), true);
    $somevar = "CURRENT_TIME";
    print constant($somevar);
?>