const和define的區別

2021-09-11 04:24:13 字數 671 閱讀 4409

const和define的區別

兩者都是定義常量,有什麼區別呢?

const constant = 'aa'
在php5.3.0以後,可以使用const關鍵字在類定義之外定義常量。

使用const關鍵字定義常量必須處於最頂端的作用區域,因為用此方法是在編譯時定義的。這就意味著不能在函式內,迴圈內以及if語句之內用const來定義常量。

define (string $name, mixed $value, [bool $case_insensitive=false]) :bool
執行時定義乙個常量,在php5中value必須是標量,在php7中還允許是個array的值。

$case_insensitive如果設定為true,該常量則大小寫不敏感。

大小寫不敏感的常量以小寫的方式儲存

note:

編譯是指php語言經過zend引擎編譯成opcode,opcode可以通過apc等方式快取;

posted on

2019-02-20 15:46

芽小凡 閱讀(

...)

編輯收藏

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...

const和 define的區別

1 const定義的常量是有型別的,define定義的常量是沒有型別的 這就意味著會對前者做乙個型別的檢查,對 define則是做乙個簡單的替換 2 const定義的常量在編譯的時候分配記憶體,而 define定義的常量在預編譯的時候進行替換,不分配記憶體 3 作用域不同,const定義的常變數的作...

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...