首頁 >後端開發 >php教程 >PHP中Define和Const的差別

PHP中Define和Const的差別

不言
不言原創
2018-07-04 17:36:232543瀏覽

這篇文章主要介紹了關於PHP中Define和Const的區別,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

我們經常把不經常變的值定義成常數,常數一般用全部大寫來表示,前面不加美元符號,那麼define和const有什麼差別呢?

常數是一個簡單的標識符。在腳本執行期間該值不能改變(除了所謂的魔術常數,他們其實不是常數)。常量預設大小寫敏感。通常常數標識符總是大寫的。

可以用define()函數來定義常數。在php5.3.0以後,可以使用const關鍵字在類別定義的外部定義常數,php7可以定義陣列常數了,先前版本const關鍵字只能在類別(class)中使用。一個常數一旦被定義,就不能再改變或取消定義。

<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const USERNAME = &#39;周伯通&#39;;
echo USERNAME.PHP_EOL;
echo constant("USERNAME");
const ZHOUUSERNAME = &#39;周伯通九阴真经&#39;;define(&#39;MYUSERNAME&#39;,&#39;周伯通九阴真经2&#39;);
echo "<pre class="brush:php;toolbar:false">";
print_r(get_defined_constants());
?>

常數和變數有以下不同:

1、const是一個語言結構;而define是一個函數,可以透過第三個參數來指定是否區分大小寫。 true表示大小寫不敏感,預設為false

2、const簡單易讀,編譯時比define快很多。

3、const可在類別中使用,用於類別成員常數定義,定義後不可修改;define不能在類別中使用,可用於全域變數

<?php
class MyClass
{    const USER = &#39;周伯通&#39;;    
function showConstant() {        
echo  self::USER . PHP_EOL;        
echo  constant(&#39;USER&#39;); // 注意:Warning: constant(): Couldn&#39;t find constant USER    
}
}
$class = new MyClass();
$class->showConstant();

4、const是在編譯時定義,因此必須處於最頂端的作用區域,不能在函數,循環及if條件中使用;而define是函數,也就是能呼叫函數的地方都可以使用

<?php
$x = true;
if ($x==1){   
//const FOO = &#39;BAR&#39;;    
// 无效的invalid
}
if ($x==1){    
define(&#39;FOO&#39;, &#39;BAR&#39;); // 有效的valid
    echo FOO;
}

 以上就是本文的全部內容,希望對大家的學習有幫助,更多相關內容請關注PHP中文網!

相關推薦:

PHP中的ob_start用法解析

#PHP empty()函數的說明

以上是PHP中Define和Const的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn