大家都知道define是定義常數的,如果在類別中定義常數呢?當然不能用define,而用const,如下例:
<?php //在类外面通常这样定义常量 define("PHP","phpernote.com"); class MyClass{ //常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号 const constant = 'constant value'; function showConstant() { echo self::constant; } } echo MyClass::constant; $classname = "MyClass"; echo $classname::constant; // PHP 5.3.0之后 $class = new MyClass(); $class->showConstant(); echo $class::constant; // PHP 5.3.0之后 print_r(get_defined_constants()); //可以用get_defined_constants()获取所有定义的常量
一般是define在類別外定義常數,const在類別內定義常數:並且const必須透過類別名稱::變數名稱來存取。但是php5.3以上支援類別外透過const定義常數,看如下,這樣是ok的:
const a = "abcdef"; echo a;
關於常數的基礎知識,這裡不說了,除了以上,define和const的其它區別(摘自網路):
1.const不能再條件語句中定義常數,但是define是可以的,如下:
if(1){ const a = 'java'; } echo a; //必错
2.const採用一個普通的常數名稱,define可以採用表達式作為名稱
const FOO = 'PHP'; for ($i = 0; $i < 32; ++$i) { define('PHP_' . $i, 1 << $i); }
3.const只能接受靜態的標量,而define可以採用任何表達式。
const PHP = 1 << 5; // 错误 define('PHP', 1 << 5); // 正确
4.const本身就是一個語言結構。而define是一個函數。所以使用const速度要快的多。
關於php中const和define的差別就總結這麼多了。
以上是php用const出錯是什麼原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!