pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

PHP命令空間namespace及use的用法小結

命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數或者類出現相同的名字,否則會產生一個致命的錯誤。這篇文章主要介紹了PHP命令空間namespace及use的用法實踐總結,需

命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數或者類出現相同的名字,否則會產生一個致命的錯誤。這種情況下只要避免命名重復就可以解決,最常見的一種做法是約定一個前綴。

使用namespace的目的:

團隊合作項目時,避免與團隊其它成員新建的類發生沖突;個人負責項目時,避免前后新建的類發生沖突;

據個人理解,用到所需要的類時,需要先require或include引入,所以會發生類重定義的錯誤的前提是:兩個相同命名的類都有被引入。目前有些php框架會自動加載(即include)所有新建的model類,所以為了避免你新建的model類和項目框架原生的核心類發生重名沖突,采用了namespace。(想了想,與團隊成員新建的類產生沖突應該通過溝通避免,即使事發后也應該重新調整類名即時維護,避免后期造成因為對類的理解混淆而帶來維護上的復雜度提高)

結合使用方法來進一步理解它的使用目的吧。

namespace的使用方法:

為了進行測試,我將創建3個文件:1.php和name.php(此文件用來執行測試),后面將不再說明,請自行注意代碼的變化。

1.namespace后命名的定義不區分大小寫

namespace one;
namespace One;
namespace ONE;

如上寫法都可以,選擇一種作為自己的規范即可。(后面代碼我采用第一種進行測試哈)

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!; 

3. new類時,帶上命名空間時,之間一定用反斜杠字符,而不是順斜杠。

記憶方法:按找%中斜杠的順序理解為順斜杠。(有時說反斜杠,自己都不知道是哪種方向,以前按自左向右上升方向這種方向記憶,現在感覺這個太不靠譜了)

//name.php
require_once './1.php';
new /Person(); // 代碼報錯:Parse error: syntax error, unexpected '/'

4.類在指定命名空間下, new類時,一定要帶上指定的命名空間。

沒有帶上指定的命名空間,按照第2點,php就會從頂級命名空間里找這個類。切記:這里不能按照頂級命名空間包含一切其它的命名空間來理解。而應該將頂級命名空間完完全全與其他命名空間區分開。

//1.php 
namespace one;
class Person{
 function __construct(){
  echo 'I am one!';
 }
}
//name.php
require_once './1.php';
new \one\Person(); //輸出 I am one!;
new \Person(); //代碼報錯:Fatal error: Class 'Person' not found

可以舉個這個通俗例子來理解:帶上指定命名空間代表某人的蘋果(在他手里),頂級命名空間代表蘋果箱里的蘋果(在箱子里)。現在要找某人的蘋果,就將某人的命名空間帶上,否則就會從箱子里找某人的蘋果,結果當然是找不到。

5.命名空間聲明后的代碼便屬于這個命名空間,即使有include或require也不影響(重點是對后半句的理解,具體看代碼)。

//1.php 
namespace one;
class Person{
 function __construct(){
  echo 'I am one!';
 }
}
//name.php
namespace test;
require './1.php'; 
new \one\Person(); //輸出 I am one!;
new Person(); //這里結果會是什么呢,猜猜看

最后一行結果報錯:

Fatal error: Class 'test\Person' not found

首先,這里與第2點比較一下:

第2點,我說,沒有命名空間時,new類時,有沒有反斜杠意義一樣。

在這里,有了命名空間,有和沒有反斜杠的意義就不一樣了。

最后一行換成

new \Person(); 

結果報錯:

Fatal error: Class 'Person' not found

接著,就說說當前這點。

我們可以發現,最后一行代碼對應的命名空間為test,并沒有受到require文件里的命名空間的影響。

進一步加強驗證,我修改了name.php文件如下:

//name.php
namespace test;
require './1.php'; 
class Person{
 function __construct(){
  echo 'I am test!';
 }
}
new \one\Person(); //輸出 I am one!;
new Person(); //這里結果會是什么,自己猜猜看 

最后,這個例子刷新了我對require的認識了。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應用程序,并傳遞相關參數方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實現依賴注入過程以及相關知識點分享,對此有興趣的朋友跟著小編學習下吧。
php遍歷一個文件夾內的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實現達到清空一個目錄的效果。本文給大家分享實例代碼,需要的朋友參考
主站蜘蛛池模板: 真空泵维修保养,普发,阿尔卡特,荏原,卡西亚玛,莱宝,爱德华干式螺杆真空泵维修-东莞比其尔真空机电设备有限公司 | 协议书_协议合同格式模板范本大全 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 昆明化妆培训-纹绣美甲-美容美牙培训-昆明博澜培训学校 | 折弯机-刨槽机-数控折弯机-数控刨槽机-数控折弯机厂家-深圳豐科机械有限公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 智能气瓶柜(大型气瓶储存柜)百科 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 重庆轻质隔墙板-重庆安吉升科技有限公司 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 山东成考网-山东成人高考网 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 贵州成人高考网_贵州成考网| 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | C形臂_动态平板DR_动态平板胃肠机生产厂家制造商-普爱医疗 | 微学堂-电动能源汽车评测_电动车性能分享网 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 消防设施操作员考试报名时间,报名入口,报考条件 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 |