亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

php中define和const有什么區(qū)別?(詳解)

來源:不言 發(fā)布時間:2019-01-11 10:55:38 閱讀量:926

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php中define和const有什么區(qū)別?(詳解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

php定義常量的方式有兩種define和const,兩者有什么區(qū)別?

1

2

const CONSTANCE = 'const';

define('CONSTANCE''const');

const關(guān)鍵字從php 5.3以后可以在類定義之外定義常量

const可以在類內(nèi)部定義,而define不行。
const定義的常量在當(dāng)前的命名空間中,而define要定義執(zhí)行的命名空間,必須寫出具體命名空間。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

class Foo {

    const BAR = 2;

}

 

 

class Foo2 {

    define("BAR", 3); //無效的

}

 

//命名空間的示例

namespace A{

    const A1 = 1; //處在命名空間A中

    define('A2',  2); //全局可調(diào)用

    define('A\A3', 3); //處在命名空間A中

}

 

namespace B{

    use const \A\A1;

    use const \A\A3;

     

    echo A1;

    echo A2; //全局調(diào)用

    echo A3;

}

const是在編譯階段定義常量,define是在預(yù)處理階段定義常量

const在編譯階段就定義了常量,定義常量時必須處于最頂端的作用區(qū)域。
所以不能再if等條件語句中定義。

define定義常量,又叫宏定義,宏可以描述為根據(jù)一系列預(yù)定義的規(guī)則替換一定的文本模式。
define可以在分支中存在。

理論上,使用const處理速度比define會快一點點。

const只接受標(biāo)量數(shù)據(jù),(如integer, string, boolean和float等);define可以接受任意表達(dá)式

1

2

define('BIT_5',   1<<5);

const BIT_5 =     1<<5; //5.6之后才有效

從php 5.6起,const也可以接受數(shù)組和表達(dá)式
define可以接受resource類型,const不行

const常量名只能是簡單字符,define可以是任意表達(dá)式

1

2

3

const STR = 'string';

$i = 1;

define("STR_" . $i,  STR);

const大小寫敏感,define可以通過第三個傳參控制大小寫敏感。

另外幾個問題

const和define定義的常量數(shù)組是否能改變其中的元素?

能否用defined來檢查const定義的常量?

以上就是php中define和const有什么區(qū)別?


標(biāo)簽: PHP
分享:
評論:
你還沒有登錄,請先