相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP命令空間namespace及use的用法小結(jié)
命名空間一個(gè)最明確的目的就是解決重名問題,PHP中不允許兩個(gè)函數(shù)或者類出現(xiàn)相同的名字,否則會(huì)產(chǎn)生一個(gè)致命的錯(cuò)誤。這種情況下只要避免命名重復(fù)就可以解決,最常見的一種做法是約定一個(gè)前綴。
使用namespace的目的:
團(tuán)隊(duì)合作項(xiàng)目時(shí),避免與團(tuán)隊(duì)其它成員新建的類發(fā)生沖突;個(gè)人負(fù)責(zé)項(xiàng)目時(shí),避免前后新建的類發(fā)生沖突;
據(jù)個(gè)人理解,用到所需要的類時(shí),需要先require或include引入,所以會(huì)發(fā)生類重定義的錯(cuò)誤的前提是:兩個(gè)相同命名的類都有被引入。目前有些php框架會(huì)自動(dòng)加載(即include)所有新建的model類,所以為了避免你新建的model類和項(xiàng)目框架原生的核心類發(fā)生重名沖突,采用了namespace。(想了想,與團(tuán)隊(duì)成員新建的類產(chǎn)生沖突應(yīng)該通過溝通避免,即使事發(fā)后也應(yīng)該重新調(diào)整類名即時(shí)維護(hù),避免后期造成因?yàn)閷︻惖睦斫饣煜鴰砭S護(hù)上的復(fù)雜度提高)
結(jié)合使用方法來進(jìn)一步理解它的使用目的吧。
namespace的使用方法:
為了進(jìn)行測試,我將創(chuàng)建3個(gè)文件:1.php和name.php(此文件用來執(zhí)行測試),后面將不再說明,請自行注意代碼的變化。
1.namespace后命名的定義不區(qū)分大小寫
namespace one;
namespace One;
namespace ONE;
如上寫法都可以,選擇一種作為自己的規(guī)范即可。(后面代碼我采用第一種進(jìn)行測試哈)
2. 沒有定義命名空間,就理解為使用頂級(jí)命名空間。new類時(shí),可以在類前加上反斜杠\,也可以不加。
//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!;