成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP中命名空間的原理是什么-創(chuàng)新互聯(lián)

PHP中命名空間的原理是什么?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)建站始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營(yíng)理念,通過(guò)多達(dá)十年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:石雕等企業(yè),備受客戶好評(píng)。

1. PHP中的命名空間是什么?

什么是命名空間?“從廣義上來(lái)說(shuō),命名空間是一種封裝事物的方法。在很多地方都可以見(jiàn)到這種抽象概念。例如,在操作系統(tǒng)中目錄用來(lái)將相關(guān)文件分組,對(duì)于目錄中的文件來(lái)說(shuō),它就扮演了命名空間的角色。具體舉個(gè)例子,文件 foo.txt 可以同時(shí)在目錄/home/greg 和 /home/other 中存在,但在同一個(gè)目錄中不能存在兩個(gè) foo.txt 文件。另外,在目錄 /home/greg 外訪問(wèn) foo.txt 文件時(shí),我們必須將目錄名以及目錄分隔符放在文件名之前得到 /home/greg/foo.txt。這個(gè)原理應(yīng)用到程序設(shè)計(jì)領(lǐng)域就是命名空間的概念?!薄臻g概述

2. PHP命名空間該如何理解?

從本質(zhì)上講,命名空間就是一個(gè)容器,這個(gè)容器內(nèi)我們可以放入類、函數(shù)和變量,他們?cè)谕幻臻g內(nèi)可以無(wú)條件相互訪問(wèn)。在命名空間之外,就必須引用或者導(dǎo)入其他命名空間,才能調(diào)用它們包含的這些項(xiàng)。

命名空間跟shell中的文件目錄的概念是一樣一樣的。在當(dāng)前目錄下可以直接用文件名訪問(wèn)所有文件,如果需要訪問(wèn)其他目錄下的文件,就需要輸入相對(duì)路徑或絕對(duì)路徑。

引用方式:


復(fù)制代碼 代碼如下:


namespace foo;
 class Foo {  
         public function foo()  
             {       
                  return \top\namespace\bar\Bar::fuck();   
              }
             }



導(dǎo)入方式:


復(fù)制代碼 代碼如下:


namespace foo;
use top\namespace\bar\Bar;
 class Foo {
        public function foo()
            {        return Bar::fuck(); 
            }
           }


導(dǎo)入就相當(dāng)于將目的類復(fù)制一份到當(dāng)前命名空間中。

3. PHP命名空間有何實(shí)際應(yīng)用?

命名空間的存在是為了解決下面兩個(gè)問(wèn)題:

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

2). 為很長(zhǎng)的標(biāo)識(shí)符名稱(通常是為了緩解第一類問(wèn)題而定義的)創(chuàng)建一個(gè)別名(或簡(jiǎn)短)的名稱,提高源代碼的可讀性。

4. 一些tips

1. 同一個(gè)空間下的類直接相互直接調(diào)用,屬于一家。例如 Laravel 中的 PageController 類中可以直接寫 Page::all() 這樣的代碼來(lái)調(diào)用 Page 這個(gè)model,因?yàn)樗麄儌z都在頂級(jí)命名空間下。

2. 若一個(gè)類存在于非頂級(jí)命名空間中,那么它只能在調(diào)用同樣是當(dāng)前命名空間下的其他類才不用“引用”或“導(dǎo)入”,它們屬于一家。任何子命名空間都是另一個(gè)命名空間,另一個(gè)容器,沒(méi)有除了容器之間關(guān)系之外的任何特殊關(guān)系。

3. Laravel 采用 classmap 方式進(jìn)行自動(dòng)加載(autoload),PHP雖然有了命名空間這個(gè)高級(jí)特性,但是這只是邏輯關(guān)系,require 文件還是要有的。這個(gè)類和文件的對(duì)應(yīng)關(guān)系就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都會(huì)重新編譯、生成。

看完上述內(nèi)容,你們掌握PHP中命名空間的原理是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

標(biāo)題名稱:PHP中命名空間的原理是什么-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://jinyejixie.com/article16/egjgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)電子商務(wù)、企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
耿马| 镇安县| 阿克苏市| 通江县| 太谷县| 桃源县| 安康市| 林西县| 长乐市| 南安市| 平湖市| 利辛县| 太仆寺旗| 监利县| 沙洋县| 临安市| 腾冲县| 五指山市| 什邡市| 北海市| 镇江市| 潼关县| 恩施市| 漠河县| 九寨沟县| 嘉祥县| 长乐市| 江北区| 大悟县| 温宿县| 张家口市| 新泰市| 恩平市| 镇原县| 古交市| 原阳县| 永寿县| 河西区| 东乌| 屏东市| 盐池县|