php常量的说明

php中的常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。通常常量标识符总是大写的。

php常量

可以用 define() 函数来定义常量。在 PHP 5.3.0 以后,可以使用 const 关键字在类定义的外部定义常量,先前版本const 关键字只能在类(class)中使用。一个常量一旦被定义,就不能再改变或者取消定义。 常量只能包含标量数据(boolean,integer,float 和 string)。 可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。 可以简单的通过指定其名字来取得常量的值,与变量不同,不应该在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数constant() 来获取常量的值。用get_defined_constants()可以获得所有已定义的常量列表。

常量和变量有如下不同的常量规则: - 常量前面没有美元符号($); - 常量只能用define() 函数定义,而不能通过赋值语句; - 常量可以不用理会变量的作用域而在任何地方定义和访问; - 常量一旦定义就不能被重新定义或者取消定义; - 常量的值只能是标量。 - 以字母或者下划线开始,后面跟着字母,数字,下划线。 - 常量的值不能有任何操作,不能包含任何变量等。

php的常量有几种类型:

php普通常量

普通常量就是使用define 来进行的常量设置。比如

define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

在5.3之后,普通常量也支持通过const来进行设置

<?php
const FOO = "something";

echo FOO;

类常量

类常量是使用const在类的内部进行设置。

这种常量可以使用类名,也可以使用实例化来获取。

<?php

class A
{
        const con = 'Acon';
}

echo A::con;

$a = new A();
echo $a::con;

使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多,还有如下区别:

  • const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
  • const可在类中使用,define不能。
  • const不能在条件语句中定义常量。
  • const采用一个普通的常量名称,define可以采用表达式作为名称。
  • const只能接受静态的标量,而define可以采用任何表达式。
  • const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

魔术常量

php的魔术常量实际上不是常量,而是一种预定义常量。

有8个魔术常量

常量 意义
__LINE__ 文件中的当前行号
__FILE__ 文件的完整路径和文件名
__DIR__ 文件所在的目录
__FUNCTION__ 函数名字
__CLASS__ 类名
__TRAIT__ Trait的名字,Trait的概念是5.4之后才加上的,所以这个魔术常量也是5.4之后才有的。
__METHOD__ 类的方法名
__NAMESPACE__ 当前命名空间名称,命名空间是5.3之后加上的,所以这个魔术常量是5.3之后才有的。

预定义常量

在php的内核中有一些是预定义常量

经常使用的一些预定义常量有:

常量 意义
PHP_VERSION PHP的版本
PHP_OS 当前运行php的操作系统(win/linux)
PHP_SAPI 当前运行php的API环境(cli/cgi)
PHP_EOL 换行
DEFAULT_INCLUDE_PATH 默认的include路径
PHP_EXTENSION_DIR PHP扩展地址

随机文章 Random Posts