相關關鍵詞
關于我們
最新文章
PHP命令空間namespace及use的用法小結(jié)
命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數(shù)或者類出現(xiàn)相同的名字,否則會產(chǎn)生一個致命的錯誤。這種情況下只要避免命名重復就可以解決,最常見的一種做法是約定一個前綴。
使用namespace的目的:
團隊合作項目時,避免與團隊其它成員新建的類發(fā)生沖突;個人負責項目時,避免前后新建的類發(fā)生沖突;
據(jù)個人理解,用到所需要的類時,需要先require或include引入,所以會發(fā)生類重定義的錯誤的前提是:兩個相同命名的類都有被引入。目前有些php框架會自動加載(即include)所有新建的model類,所以為了避免你新建的model類和項目框架原生的核心類發(fā)生重名沖突,采用了namespace。(想了想,與團隊成員新建的類產(chǎn)生沖突應該通過溝通避免,即使事發(fā)后也應該重新調(diào)整類名即時維護,避免后期造成因為對類的理解混淆而帶來維護上的復雜度提高)
結(jié)合使用方法來進一步理解它的使用目的吧。
namespace的使用方法:
為了進行測試,我將創(chuàng)建3個文件:1.php和name.php(此文件用來執(zhí)行測試),后面將不再說明,請自行注意代碼的變化。
1.namespace后命名的定義不區(qū)分大小寫
namespace one;
namespace One;
namespace ONE;
如上寫法都可以,選擇一種作為自己的規(guī)范即可。(后面代碼我采用第一種進行測試哈)
2. 沒有定義命名空間,就理解為使用頂級命名空間。new類時,可以在類前加上反斜杠\,也可以不加。
//1.php class Person{ function __construct(){ echo 'I am one!'; } } //name.php require_once './1.php'; new Person(); //輸出 I am one!; new \Person(); //輸出 I am one!;