亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP命名空間中define和const的區別

PHP命名空間中define和const的區別

PHP
瀟瀟雨雨 2019-03-12 05:43:25
比如在a.php用define定義一個常量,在b.php中聲明一個命名空間 && 引入a.php此時在b.php中無法再次定義同名的常量,然而用const卻可以,求解,謝謝諸位 a.php代碼: define('ROOT','123'); b.php代碼: namespace web360; require 'c.php'; define('ROOT','123'); 此時會報錯(常量已經定義)而如果用const定義的話,則不會出現此問題
查看完整描述

3 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

這是因為 define 不會考慮命名空間,而 const 會。

簡單的說,使用 define 定義時,不會考慮當前的命名空間,所以你兩次定義的常量名稱重復,會報重復定義。
而使用 const 定義時,會帶上命名空間,你兩次定義的常量實際是 ROOTweb360\ROOT 。名稱不重復,不會報重復定義的錯誤。

查看完整回答
反對 回復 2019-03-18
?
浮云間

TA貢獻1829條經驗 獲得超4個贊


function t(){
    return 123;
}

// const T_VALUE = t() // 錯誤

define('T_VALUE', t()) // 正確
查看完整回答
反對 回復 2019-03-18
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

const不是用在類里面定義類的常量的嗎. 同樣一個類不能定義相同常量. define是全局常量自然全局只能一個. 如果能定義多個同名常量,就失去它作為常量的意義了.

查看完整回答
反對 回復 2019-03-18
  • 3 回答
  • 0 關注
  • 421 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號