這篇文章主要介紹了關於PHP中Define和Const的區別 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
我們經常把不經常變的值定義成常量,常量一般用全部大寫來表示,前面不加貨幣符號,那麼define和const有什麼區別呢?
常量是一個簡單的標識符。在指令碼執行期間該值不能改變(除了所謂的魔術常量,他們其實不是常量)。常量預設大小寫敏感。通常常量標識符總是大寫的。
可以用define()函數來定義常量。在php5.3.0以後,可以使用const關鍵字在類定義的外部定義常量,php7可以定義常數陣列了,先前版本const關鍵字只能在類(class)中使用。一個常量一旦被定義,就不能再改變或取消定義。
<?php// 以下代碼在 PHP 5.3.0 後可以正常工作const USERNAME = '周伯通';echo USERNAME.PHP_EOL;echo constant("USERNAME");const ZHOUUSERNAME = '周伯通九陰真經';define('MYUSERNAME','周伯通九陰真經2');echo "<pre>";print_r(get_defined_constants());?>
常量和變數有如下不同:
1、const是一個語言結構;而define是一個函數,可以通過第三個參數來指定是否區分大小寫。true表示大小寫不敏感,預設為false
2、const簡單易讀,編譯時間要比define快很多。
3、const可在類中使用,用於類成員常量定義,定義後不可修改;define不能在類中使用,可用於全域變數
<?phpclass MyClass{ const USER = '周伯通'; function showConstant() { echo self::USER . PHP_EOL; echo constant('USER'); // 注意:Warning: constant(): Couldn't find constant USER }}$class = new MyClass();$class->showConstant();
4、const是在編譯時間定義,因此必須處於最頂端的作用地區,不能在函數,迴圈及if條件中使用;而define是函數,也就是能調用函數的地方都可以使用
<?php$x = true;if ($x==1){ //const FOO = 'BAR'; // 無效的invalid}if ($x==1){ define('FOO', 'BAR'); // 有效valid echo FOO;}
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!