首页 > 技术分享 > 原生PHP
收藏

PHP中const关键字的用法,const和define的区别

05/14 18:53
大潇博客 原创文章,转载请标明出处

当不希望一个成员变量被修改,希望该变量的值是固定不变的,这时可以用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->常量...   //此种写法错误,常量属于类,不属于对象


举例:

class A

    //常量在定义的时候,必须给初值

    //const关键字前面不要带修饰符号,默认public

    const TAX_RATE = 0.08;

    public function payTax(){

        return A::TAX_RATE;

        return self::TAX_RATE;  //两种写法

        //常量不能修改

        //A::TAX_RATE = 0.01; (错误)

    }

}


如果常量名是动态的,也可以用函数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不可用在条件判断中,不可以是表达式赋值,必须是标量。


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311