這篇文章帶給大家的內容是關於php中define和const有什麼差別? (詳解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
php定義常數的方式有兩種define和const,兩者有什麼差別?
const CONSTANCE = 'const'; define('CONSTANCE', 'const');
const關鍵字從php 5.3以後可以在類別定義之外定義常數
const可以在類別內部定義,而define不行。
const定義的常數在目前的命名空間中,而define要定義執行的命名空間,必須寫出具體命名空間。
class Foo { const BAR = 2; } class Foo2 { define("BAR", 3); //无效的 } //命名空间的示例 namespace A{ const A1 = 1; //处在命名空间A中 define('A2', 2); //全局可调用 define('A\A3', 3); //处在命名空间A中 } namespace B{ use const \A\A1; use const \A\A3; echo A1; echo A2; //全局调用 echo A3; }
const是在編譯階段定義常數,define是在預處理階段定義常數
const在編譯階段就定義了常數,定義常數時必須處於最頂端的作用區域。
所以不能再if等條件語句中定義。
define定義常數,又叫巨集定義,巨集可以描述為根據一系列預先定義的規則取代一定的文字模式。
define可以在分支中存在。
理論上,使用const處理速度比define會快一點點。
const只接受標量數據,(如integer, string, boolean和float等);define可以接受任意表達式
define('BIT_5', 1<<5); const BIT_5 = 1<<5; //5.6之后才有效
從php 5.6起,const
也可以接受陣列和表達式define
可以接受resource
類型,const
不行
const常數名只能是簡單字符,define可以是任意表達式
const STR = 'string'; $i = 1; define("STR_" . $i, STR);
另外幾個問題
const和define定義的常數數組是否能改變其中的元素?能否用defined來檢查const定義的常數?
###### ###以上是php中define和const有什麼差別? (詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!