首頁 > 後端開發 > PHP問題 > php define有什麼用

php define有什麼用

青灯夜游
發布: 2023-03-17 21:06:01
原創
2151 人瀏覽過

在php中,define()函數用來定義一個常數,語法「define($name, $value , $case_insensitive)」;參數「$case_insensitive」用來指定常數是否大小寫敏感,預設是大小寫敏感的,值設定為true則表示大小寫不敏感。常量一旦被定義就不能被重新定義或取消定義。

php define有什麼用

本教學操作環境:windows7系統、PHP8版、DELL G3電腦

define是PHP中的內建函數,用於定義一個常量。

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

常數類似變量,不同之處在於:在設定以後,常量的值無法更改常數名,不需要開頭的美元符號($),作用域不影響對常數的訪問,常量值只能是字串或數字。

define()函數定義常數

合法的常數名稱只能以字母和底線開始,後面可以跟著任意長度的字母、數字或底線。在PHP 中可以透過define() 函數定義常數,define() 函數的語法如下:

define($name, $value , $case_insensitive)
登入後複製
  • $name 必選參數,常數名稱(需使用雙引號或單引號包裹)

  • $value 必選參數,常數的值

  • $case_insensitive 可選參數,指定是否大小寫敏感,預設是大小寫敏感的,設定為true 則表示大小寫不敏感

<?php
header("Content-type:text/html;charset=utf-8");
define(&#39;WebSite&#39;, &#39;php中文网&#39;);
echo WebSite.&#39;<br>&#39;;
?>
登入後複製

php define有什麼用

擴充知識:

const關鍵字定義常數

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

語法:

const 常量名 = 常量值;
登入後複製

範例:

<?php
const FOO = &#39;BAR&#39;;
echo FOO.&#39;<br>&#39;;
?>
登入後複製

#define() 和const 的差異:

const是在編譯時定義常數,而define()方法是在運行時定義常數。

const不能用在if語句中, defne()能用在if語句中。

if(...) {
    const FOO = &#39;BAR&#39;;//错误
}
if(...) {
    define(&#39;FOO&#39;, &#39;BAR&#39;);//正确
}
登入後複製

define()的一個常用場景是先判斷常數是否已經定義再定義常數:

if(defined(&#39;FOO)) {
    define(&#39;FOO&#39;, &#39;BAR&#39;)
}
登入後複製

const 定義常數時,值只能是靜態標量(數字, 字串, true ,false, null), 而define()方法可以把任意表達式的值當作常數的值。從PHP5.6開始const也允許把表達式當作常數的值了。

const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持
define(&#39;BIT_5&#39;, 1 << 5);// 所有PHP版本都支持const 只允许简单的常量名,而define()可以把任何表达式的值用作常量名
登入後複製
for ($i = 0; $i < 32; $i++) {
    define(&#39;BIT_&#39; . $i, 1 << $i);
}
登入後複製

const 定義的常數常數名稱是大小寫敏感的,而傳遞true給define()方法的第三個參數時可以定義大小寫不敏感的常數。

define(&#39;FOO&#39;, &#39;BAR&#39;, true);
echo FOO; //BAR
echo foo; //BAR
登入後複製

上面列舉的都是const相較define()而言的一些缺點或不靈活的地方,下面我們看一下為什麼我個人推薦用const而不是define()來定義常數(除非要在上述列舉的場景中定義常數)。

const 具有更好的可讀性,const是語言結構而不是函數,並且與在類別中定義類別常數的形式保持一致。

const在目前的命名空間中定義常數,而define()要實現類似效果必須在定義時傳遞完整的命名空間名稱:

namespace A\B\C;
//To define the constant A\B\C\FOO:
const FOO = &#39;BAR&#39;;
define(&#39;A\B\C\FOO&#39;, &#39;BAR&#39;);
登入後複製

推薦學習:《PHP影片教學

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

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板