首頁 >後端開發 >PHP問題 >php中define和const的差別是什麼?

php中define和const的差別是什麼?

青灯夜游
青灯夜游原創
2020-07-21 10:45:172723瀏覽

區別:1、const用於類別成員變數的定義,而define不可用於類別成員變數的定義;2、const只接受靜態的標量,而define可以採用任何表達式;3、const定義常數時大小寫敏感,但define可以透過第三個參數來指定大小寫是否敏感。

php中define和const的差別是什麼?

常數預設大小寫敏感,通常常數的識別碼總是大寫的。

可以用define()函數來定義常數,在php5.3.0之後,可以使用const關鍵字在類別定義的外部定義常數,先前版本const關鍵字只能在類別(class)中使用。

常數只能包含標量資料 (boolean,integer,float,string)。可以定義resource常數,但應該盡量避免。

定義常數

define("PI", 3.14);
echo PI; // 3.14
echo pi; // 输出 "pi" 并发出一个Warning信息

// 以下代码在 PHP 5.3.0 后可以正常工作
const RATE = 'Hello World';
echo RATE;

在PHP中定義常數時,const與define的區別

1、const本身是一個語言結構,而define是一個函數。

2、const在編譯時比define快很多

3、const用於類別成員變數的定義,而define不可用於類別成員變數的定義

4、const不能在條件語句中使用

if (...){
    const FOO = 'BAR';    // 无效的
}
if (...) {
    define('FOO', 'BAR'); // 有效的
}

5、const只接受靜態的標量,而define可以採用任何表達式

const BIT_5 = 1 << 5;    // 无效的
define(&#39;BIT_5&#39;, 1 << 5); // 有效的

6、const定義常數時大小寫敏感,但define可以透過第三個參數(為true表示大小寫不敏感)來指定大小寫是否敏感

define(&#39;FOO&#39;, &#39;BAR&#39;, true);
echo FOO; // BAR
echo foo; // BAR

動態常數名稱

如果常數名稱是動態的,也可以用函數constant()來取得常數的值。用get_defined_contstants()可以得到所有已定義的常數列表。

define(&#39;PI&#39;,3.14);

$chang = &#39;PI&#39;;
echo $chang,&#39;<br/>'; // PI

echo constant($chang); // 3.14

defined — 檢查某個名稱的常數是否存在

#
// 真实开发一般是这样的
if(!defined('HEI')){
    define('HEI',8846);
}

相關教學推薦:《PHP教學

以上是php中define和const的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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