define('name', 'value') 自定義全局常量,默認大小寫敏感
const 定義類常量, 常量明前不用$, 一般使用大寫字母
定義全局常量
define('CH', '傳說');
定義類常量
class ConstTest{
const VERSION = '1.0'
function getConstTest(){
echo 'self::VERSION is :' . self::VERSION; //這里不使用$符號
}
}
Ps:
- 一般盡量不使用define的原因:
1.1 define 定義后的常量不能再修改 或 再次賦值,會報notice錯誤
1.2 判斷是否定義全局常量的方法是: defined('常量名') ,大小寫注意,不能用isset()判斷
1.3 執行效率低,系統會從整個執行流程中查找該全局常量
類常量和類靜態變量
類屬性中有:類常量,類靜態變量,公有、私有、受保護變量
class Test{
const CONSTVAR= 'constvar'; //類常量
static $static_var= 'staticvar'; //類靜態變量
function getStaticVar(){
return self :: $staticVar;
}
}
echo Test::CONSTVAR; // 類常量
echo Test::$static_var; //類靜態變量
Ps:
- 讓同一個函數在多次調用時可以使用同一個共享變量.就是靜態變量(屬性)
- 類的靜態屬性,會在類文件加載時就初始化,屬性值是可以更改的。值可以是任意變量類型(但初始化的時候. 只能是簡單數據類型, 數組)
- 類常量,一旦定義了就無法變更值。值只能是簡單的數據類型
Link:
參考和整理自以下鏈接:
1.http://www.jb51.net/article/55089.htm
2.http://huangqiqing123.iteye.com/blog/1921428