成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

php - namespace篇

jimhs / 3579人閱讀

摘要:中命名空間可以解決兩類問題用戶編寫的代碼與內(nèi)部的類函數(shù)常量或第三方類函數(shù)常量之間的名字沖突。在沒定義命名空間的情況下,所有的常量類函數(shù)等都在全局空間下。注意訪問任意全局類函數(shù)或變量,都可以使用完全限定名稱,例如或者。

之前沒有系統(tǒng)學(xué)習(xí)過PHP語言,直接上手TP框架了,所以認(rèn)為namespaceuseTP框架的一部分,最近學(xué)習(xí)語言模塊的時(shí)候遇到了這個(gè)問題,所以匯總了一下。

PHP中命名空間可以解決兩類問題:

用戶編寫的代碼與PHP內(nèi)部的類、函數(shù)、常量或第三方類、函數(shù)、常量之間的名字沖突。

為很長的標(biāo)識符名稱(通常是為了緩解第一類問題而定義的)創(chuàng)建一個(gè)別名,提高代碼的可讀性。

在沒定義命名空間的情況下,所有的常量、類、函數(shù)等都在全局空間下。

命名空間

通過關(guān)鍵字namespace聲明??梢栽谕粋€(gè)文件中定義不同的命名空間代碼,全局的非命名空間代碼與命名空間中的代碼通過大括號的形式可以組合在一起


子命名空間
與目錄和文件的關(guān)系很像,PHP命名空間也允許指定層次的命名空間的名稱

命名空間的引入

通過關(guān)鍵字use引入,通過as定義別名

引入命名空間三種情況:
非限定名稱,或不包含前綴的類名稱。在命名空間為a下,使用$a = new foo();代表引用的是afoo。在命名空間為全局的情況下,使用該方法則引用的是foo。
限定名稱,或包含前綴的名稱。在命名空間為a下,使用$a = new bfoo();代碼引入的是afoo。在命名為全局的情況下,使用該方法引入的是bfoo
完全限定名稱,或包含了全局前綴操作符的名稱。在命名空間為a下,$a = new cfoo();這種情況下,總是引入為cfoor文件

上述三種方式其實(shí)就是文件路徑中絕對路徑和相對路徑。

注意:訪問任意全局類、函數(shù)或變量,都可以使用完全限定名稱,例如strlen()或者Exception。

namespace__NAMESPACE__魔術(shù)常量

namespace用于定義命名空間,__NAMESPACE__是包含當(dāng)前命名空間的字符串,在全局的情況下,它是一個(gè)空字符串""

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29028.html

相關(guān)文章

  • thinkphp源碼分析(三)—自動(dòng)加載(Loader的分析)

    摘要:源碼分析自動(dòng)加載系統(tǒng)會(huì)調(diào)用方法注冊自動(dòng)加載,在這一步完成后,所有符合規(guī)范的類庫包括依賴加載的第三方類庫都將自動(dòng)加載。是通過加載對應(yīng)的文件進(jìn)行注冊加載的。 源碼分析 自動(dòng)加載 系統(tǒng)會(huì)調(diào)用 Loader::register()方法注冊自動(dòng)加載,在這一步完成后,所有符合規(guī)范的類庫(包括Composer依賴加載的第三方類庫)都將自動(dòng)加載。 系統(tǒng)的自動(dòng)加載由下面主要部分組成: 1. 注冊系統(tǒng)的自...

    Pandaaa 評論0 收藏0
  • Zephir入門 —— 語法

    摘要:變量對象屬性數(shù)組靜態(tài)變量不支持全局變量,也不允許訪問用戶域的全局變量,但是可以訪問的超級全局變量變量類型支持動(dòng)態(tài)和靜態(tài)類型。雖然失去了動(dòng)態(tài)型變量的靈活性,但是在編譯時(shí)靜態(tài)變量能進(jìn)行更多的優(yōu)化。 概述 Zephir的語法跟PHP很相似,所以這里不會(huì)把官網(wǎng)的文檔照搬過來翻譯一遍,而是會(huì)把一些Zephir相較于PHP比較特別的語法挑出來講一下。如果想要要完整學(xué)習(xí)Zephir的語法,沒有比官...

    shiina 評論0 收藏0
  • lumen5.5學(xué)習(xí)路由和中間件(四)

    摘要:想要做到這一點(diǎn),你需要定義中間件為。如果你希望在及方法被調(diào)用時(shí)使用一致的中間件實(shí)例,只需在容器中使用容器的方法注冊中間件以上就是路由和中間件的學(xué)習(xí),最后那那其實(shí)理解得有點(diǎn)虛,有錯(cuò)記得指出修正,謝謝 前幾篇了解完從請求到響應(yīng)的流程后,仔細(xì)學(xué)習(xí)下路由和中間件的玩法 ----------------------------------分割線--------------------------...

    1fe1se 評論0 收藏0
  • Laravel Policy 使用

    摘要:提供更簡單的方式來處理用戶授權(quán)動(dòng)作。類似用戶認(rèn)證,有種主要方式來實(shí)現(xiàn)用戶授權(quán)和策略,我這里主要講解下策略的使用。文檔上面有詳細(xì)的說明,我這里只根據(jù)自己使用過程做一個(gè)簡單的筆記。 Laravel 提供更簡單的方式來處理用戶授權(quán)動(dòng)作。類似用戶認(rèn)證,有 2 種主要方式來實(shí)現(xiàn)用戶授權(quán):gates 和策略,我這里主要講解下策略的使用。 文檔 上面有詳細(xì)的說明,我這里只根據(jù)自己使用過程做一個(gè)簡單的...

    曹金海 評論0 收藏0
  • Laravel與Repository Pattern(倉庫模式)——概念

    摘要:確實(shí),要獨(dú)立一個(gè)操作層出來,確實(shí)會(huì)增加大量代碼,非常繁瑣。如果你是小項(xiàng)目,未必需要使用這一模式。但如果是年以上的復(fù)雜大型項(xiàng)目,這種模式的好處就比較明顯了。如果你是純新手,建議你暫時(shí)不要往下看,先把用得比較熟練后再回來學(xué)習(xí)。 為什么要學(xué)習(xí)Repository Pattern(倉庫模式) Repository 模式主要思想是建立一個(gè)數(shù)據(jù)操作代理層,把controller里的數(shù)據(jù)操作剝離出來...

    tomener 評論0 收藏0

發(fā)表評論

0條評論

jimhs

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<