当不希望一个成员变量被修改,希望该变量的值是固定不变的,这时可以用const去修饰该成员,这样这个变量就自动成为常量。
在 PHP 5.3.0 之前可以用 define() 函数来定义常量。
在 PHP 5.3.0 以后,可以使用 const 关键字在类定义的外部定义常量,先前版本const 关键字只能在类(class)中使用。
一个常量一旦被定义,就不能再改变或者取消定义。
常量只能包含标量数据(boolean,integer,float 和 string),不能是表达式。
可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。
基本用法:
const 常量名 = 值;
注意:
⑴. 常量名应该全部大写,并且前面不能有“$”符号;
⑵. 常量属于public
访问(调用)方法:
类名::常量名 或 接口名::常量名
举例:
class A{
const 常量名 = 赋初值;
}
interface 接口名{
const 常量名 = 赋初值;
}
使用方法:
类名::常量名; 接口名::常量名;
const使用注意事项:
⑴. 常量名一般字母全部大写,如:TAXRATE
⑵. 在定义常量的时候,必须赋始值,如:TAXRATE=1.1
⑶. const关键字前不能用public/portected/private修饰
⑷. 访问常量
①. 在类的外部 类名::常量名
②. 在类的内部 类名::常量名 或者 self::常量名
⑸. 常量的值在定义的时候就初始化,以后就不能修改
⑹. 常量可以被子类继承
⑺. 一个常量是属于一个类的(好比静态变量),而不是属于某个对象
如:return $this->常量... //此种写法错误,常量属于类,不属于对象
举例:
如果常量名是动态的,也可以用函数constant() 来获取常量的值,这个函数可以返回一个常量的值,如果常量未定义则返回 NULL。
define('ORDER','order list');
class Column{
const url="aaa";
const img="bbb";
}
$col="Column";
$type=$_GET['type'];
print(constant($col."::".$type));
print(constant("ORDER"));
const和define的区别:
define不可以出现在类定义之中,const可以定义在类中;
define可用在条件判断中,比如if条件不成立,定义就不生效,成功定义后全局可用,可以是表达式赋值;
const不可用在条件判断中,不可以是表达式赋值,必须是标量。