php中的常量

来源:互联网 发布:au cs6 mac 汉化 编辑:程序博客网 时间:2024/05/16 06:01

简介

要定义常量,可使用define()函数,包括以下两种形式:
define("name", value, true|false);
define("name", value);  // 第三个参数默认为false
第一个参数是一个字符串,代表常量的名称。
第二个参数是常量的值,此值不要求是一个常量表达式。
第三个参数指定常量是否不需要区分大小写,设为true则不区分。
注意,一个常量一旦被定义,就不能再改变或者取消定义。使用常量时,直接引用常量名称即可,不能使用$符号。而且常量的范围是全局的。不用管作用区域就可以在脚本的任何地方访问常量(与超全局变量类似)。
常量只能包含标量数据(boolean,integer,float 和 string)和数组。可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。
常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。

$a = 'vara';define("x", $a, true);$a = 'varb';echo x;        // vara


也可以使用 const 关键字在类定义之外定义常量,比如:
const NAME = "Ann";
不过,define()方式可以不用理会变量的作用域而在任何地方定义和访问;而且使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。

此外,const定义常量时,必须用常量表达式进行初始化,相反,define()可以使用变量、函数调用表达式等。

const a = [1,2,3];var_dump(a[0]);  // int(1)


魔术常量

这面这些常量都是预定义常量,不过值切不是不变的,而是会随着使用它们的上下文不同而不同。

__LINE__        :文件的行号

__FILE__        :文件的完整路径和文件名
__DIR__         :文件所在的目录
__FUNCTION__    :函数被定义时的名字(区分大小写)。
__CLASS__       :类被定义时的名字(区分大小写)。
__TRAIT__       :Trait的名字(区分大小写)。Trait名包括其被声明的作用区域(例如 Foo\Bar)。
__METHOD__      :类的方法名。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__   :当前命名空间的名称(区分大小写)。


预定义常量

除了魔术常量外,还有其它大量的预定义常量,这些是真正的常量

var_dump(PHP_VERSION);            // string(6) "7.1.11"var_dump(PHP_MAJOR_VERSION);      // int(7)var_dump(PHP_MINOR_VERSION);      // int(1)var_dump(PHP_RELEASE_VERSION);    // int(11)var_dump(PHP_VERSION_ID);         // int(70111)var_dump(PHP_EXTRA_VERSION);      // string(0) ""var_dump(PHP_OS);                 // string(5) "WINNT"var_dump(PHP_EOL);                // string(2) 当前平台下的行结束符var_dump(PHP_INT_MAX);var_dump(PHP_INT_MIN);var_dump(PHP_INT_SIZE);//var_dump(PHP_FLOAT_DIG);     // 浮点数可精确到的小数位数//var_dump(PHP_FLOAT_EPSILON); // 可表示的最小正浮点数//var_dump(PHP_FLOAT_MIN);//var_dump(PHP_FLOAT_MAX);

除此之外,还有大量与PHP有关的路径信息、错误信息等


相关函数

constant ( string $name )

返回常量的值,如果常量未定义,返回NULL。


bool defined ( string $name )

检查一个常量是否已经定义,注意,只用于常量检测。如果你要检查一个变量是否存在,请使用 isset()。如果你要检测某个函数是否存在,使用 function_exists()。


array get_defined_constants ([ bool $categorize = false ] )

返回所有常量的关联数组,键是常量名,值是常量值。返回当前所有已定义的常量名和值。 这包含 define() 函数所创建的,通过const关键字定义的,也包含了所有扩展所创建的。

参数用于指定是否以二维数组的形式返回。


原创粉丝点击