比如在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 定義時,會帶上命名空間,你兩次定義的常量實際是 ROOT
和 web360\ROOT
。名稱不重復,不會報重復定義的錯誤。

浮云間
TA貢獻1829條經驗 獲得超4個贊
function t(){
return 123;
}
// const T_VALUE = t() // 錯誤
define('T_VALUE', t()) // 正確

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