資源描述:
《php面向?qū)ο蟪绦蛟O計》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在學術論文-天天文庫。
1、php面向?qū)ο蟪绦蛟O計命名空間概述在php中,命名空間用來解決在編寫類庫或應用程序時創(chuàng)建可重用地代碼如類或函數(shù)時碰到地兩類問題:用戶編寫地代碼與php內(nèi)部地類/函數(shù)/常量或第三方類/函數(shù)/常量之間地名字沖突.為很長地標識符名稱(通常是為了緩解第一類問題而定義地)創(chuàng)建一個別名(或簡短)地名稱,提高源代碼地可讀性.php命名空間提供了一種將相關地類、函數(shù)和常量組合到一起地途徑.下面是一個說明phP命名空間語法地示例:定義命名空間雖然任意合法地php代碼都可以包含在命名空間中,但只有三種類型地代碼受命名空間地影響,它們是:類,函數(shù)和常量.命名空間通過關鍵字namespa
2、ce來聲明.如果一個文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間.另外,與php其它地語言特征不同,同一個命名空間可以定義在多個文件中,即允許將同一個命名空間地內(nèi)容分割存放在不同地文件中.當然你也可以在同一個文件中定義多個命名空間.代碼如下:namespacemyproject:classmyclassnbsp;nbsp;nbsp:ttcode...定義子命名空間:與目錄和文件地關系很象,php命名空間也允許指定層次化地命名空間地名稱.因此,命名空間地名字可以使用分層次地方式定義:代碼如下:namespacemyprojecthelperhttp;
3、classmyclass{nbsp;nbsp;nbsp;ttcode...}在同一個文件中定義多個命名空間:在同一個文件中聲明多個命名空間有兩種方式,不過在實際編程實踐中,非常不提倡在同一個文件中定義多戈命名空間.這種方式地主要用于將多個php腳本合并在同一個文件中.下面列出第一種方法.代碼如下:namespacemyprojecthelperhttp;classmyclassnbsp;nbsp;nbsp;#code...namespacemyprojecthelperrequest;classmyclass{nbsp:nbsp;nbsp;#code...
4、不過強烈不建議使用這種方法,可以參考下面地大括號定義法:代碼如下:namespacemyprojecthelperhttp;{nbsp;nbsp;nbsp;classmyclassnbsp;nbsp;nbsp:{nbsp:nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;ttcode...nbsp;nbsp;nbsp;}namespacemyprojecthelperrequest:nbsp;nbsp;nbsp;classmyclassnbsp;nbsp;nbsp;{nbsp;nbsp;nbsp:nbsp;nbsp;nbsp;nbsp;#code
5、...nbsp;nbsp;nbsp;}}php命名空間中地元素使用在討論如何使用命名空間之前,必須了解php是如何知道要使用哪一個命名空間中地元素地.類名可以通過三種方式引用:非限定名稱,或不包含前綴地類名稱,例如$a=newf000;或foo::staticmethod();.如果當前命名空間是currentnamespace,foo將被角軍析為currentnamespacef00.如果使用foo地代碼是全局地,不包含在任何命名空間中地代碼,則foo會被解析為foo.警告:如果命名空間中地函數(shù)或常量未定義,則該非限定地函數(shù)名稱或常量名稱會被解析為全局函數(shù)名稱
6、或常量名稱.詳情參見使用命名空間:后備全局函數(shù)名稱/常量名稱.限定名稱,或包含前綴地名稱,例如$a=newsubnamespacefoo();或subnamespacefoo::staticmethodO;?如果當前地命名空間是currentnamespace,則foo會被解析為currentnamespacesubnamespacefoo.如果使用foo地代碼是全局地,不包含在任何命名空間中地代碼,foo會被解析為subnamespacefoo.完全限定名稱,或包含了全局前綴操作符地名稱,例如,$a=newcurrentnamespacefoo()
7、;s^currentnamespacefoo::staticmethod();.在這種情況下,foo總是被解析為代碼中地文字名(literalname)currentnamespacefoo.使用命名空間:別名/導入允許通過別名引用或?qū)胪獠康赝耆薅Q,是命名空間地一個重要特征.php命名空間支持有兩種使用別名或?qū)敕绞剑簽轭惷Q使用別名,或為命名空間名稱使用別名.在php中,別名是通過操作符use來實現(xiàn)地.注意php不支持導入函數(shù)或常量.代碼如下:namespacefoo:usemyfullclassnameasanother;//下面地例子與us
8、emyf