php中const与define的使用区别

作者:王炜
日期:2015年06月28日

在类里面定义常量用 const 关键字,而不是通常的 define() 函数。

<?php
Class Person{
    // 定义常量
    const country = "中国";

    public function myCountry() {
        //内部访问常量
        echo "我是".self::country."人<br />";
    }
}

// 输出常量
echo Person::country."<br />";

// 访问方法
$p1 = new Person();
$p1 -> myCountry();
?>

define定义的是全局常量,常量一次定义后可以在整个PHP程序的任何地方调用,但不可以被改变。
PHP 5.3.0 以后,可以使用 const 关键字在类定义的外部定义常量,先前版本const 关键字只能在类(class)中使用。

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

(1)const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
(2)const可在类中使用,define不能。
(3)const不能在条件语句中定义常量。

例如:
    if (...){
       const FOO = 'BAR';    // 无效的invalid
   } 
   if (...) {
       define('FOO', 'BAR'); // 有效的valid
   }
(4)const采用一个普通的常量名称,define可以采用表达式作为名称。
    const  FOO = 'BAR'; 
   for ($i = 0; $i < 32; ++$i) {
       define('BIT_' . $i, 1 << $i);
   }

(5)const只能接受静态的标量,而define可以采用任何表达式。
例如:
    const BIT_5 = 1 << 5;    // 无效的invalid 
   define('BIT_5', 1 << 5); // 有效的valid

(6)const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。
例如:
    define('FOO', 'BAR', true); 
   echo FOO; // BAR
   echo foo; // BAR



 
																
									
				

欢迎转载,转载请保留链接: https://www.phpzu.com/article/2015/06/28/821.html

php中const与define的使用区别:等您坐沙发呢!

发表评论

*

code

0