比如在a.php用define定義一個(gè)常量,在b.php中聲明一個(gè)命名空間 && 引入a.php此時(shí)在b.php中無(wú)法再次定義同名的常量,然而用const卻可以,求解,謝謝諸位
a.php代碼:
define('ROOT','123');
b.php代碼:
namespace web360;
require 'c.php';
define('ROOT','123');
此時(shí)會(huì)報(bào)錯(cuò)(常量已經(jīng)定義)而如果用const定義的話,則不會(huì)出現(xiàn)此問(wèn)題
3 回答

POPMUISE
TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
這是因?yàn)?define 不會(huì)考慮命名空間,而 const 會(huì)。
簡(jiǎn)單的說(shuō),使用 define 定義時(shí),不會(huì)考慮當(dāng)前的命名空間,所以你兩次定義的常量名稱重復(fù),會(huì)報(bào)重復(fù)定義。
而使用 const 定義時(shí),會(huì)帶上命名空間,你兩次定義的常量實(shí)際是 ROOT
和 web360\ROOT
。名稱不重復(fù),不會(huì)報(bào)重復(fù)定義的錯(cuò)誤。

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
function t(){
return 123;
}
// const T_VALUE = t() // 錯(cuò)誤
define('T_VALUE', t()) // 正確

HUX布斯
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
const不是用在類里面定義類的常量的嗎. 同樣一個(gè)類不能定義相同常量. define是全局常量自然全局只能一個(gè). 如果能定義多個(gè)同名常量,就失去它作為常量的意義了.
- 3 回答
- 0 關(guān)注
- 416 瀏覽
添加回答
舉報(bào)
0/150
提交
取消