欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中的命名空間相關(guān)概念淺析

 更新時(shí)間:2015年01月22日 09:30:03   投稿:junjie  
這篇文章主要介紹了PHP中的命名空間相關(guān)概念淺析,從廣義上來(lái)說(shuō),命名空間是一種封裝事物的方法,在很多地方都可以見(jiàn)到這種抽象概念,需要的朋友可以參考下

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). 用戶編寫(xiě)的代碼與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 類中可以直接寫(xiě) 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ì)重新編譯、生成。

相關(guān)文章

  • Thinkphp無(wú)限級(jí)分類代碼

    Thinkphp無(wú)限級(jí)分類代碼

    這篇文章主要介紹了Thinkphp無(wú)限級(jí)分類代碼,無(wú)限級(jí)分類真的很重要了,我不會(huì)寫(xiě)怎么辦?本篇就一步步告訴大家如何制作無(wú)限級(jí)分類,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 服務(wù)器變量 $_SERVER 的深入解析

    服務(wù)器變量 $_SERVER 的深入解析

    本篇文章是對(duì)服務(wù)器變量$_SERVER進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • PHP的消息通信機(jī)制測(cè)試實(shí)例

    PHP的消息通信機(jī)制測(cè)試實(shí)例

    這篇文章主要介紹了PHP的消息通信機(jī)制,結(jié)合實(shí)例形式分析了php消息通信的信息發(fā)送與獲取相關(guān)操作技巧,需要的朋友可以參考下
    2016-11-11
  • PHP類的自動(dòng)加載與命名空間用法實(shí)例分析

    PHP類的自動(dòng)加載與命名空間用法實(shí)例分析

    這篇文章主要介紹了PHP類的自動(dòng)加載與命名空間,結(jié)合實(shí)例形式分析了PHP類的自動(dòng)加載與命名空間相關(guān)概念、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-06-06
  • PHP實(shí)現(xiàn)讀取文件夾及批量重命名文件操作示例

    PHP實(shí)現(xiàn)讀取文件夾及批量重命名文件操作示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)讀取文件夾及批量重命名文件操作,涉及php目錄讀取、遍歷、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • php修改指定文件后綴的方法

    php修改指定文件后綴的方法

    這篇文章主要介紹了php修改指定文件后綴的方法,文中的函數(shù)foreachDir可實(shí)現(xiàn)文件目錄的檢測(cè)、讀取、打開(kāi)及文件后綴替換等功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • php使用Imagick生成圖片的方法

    php使用Imagick生成圖片的方法

    這篇文章主要介紹了php使用Imagick生成圖片的方法,實(shí)例分析了php基于Imagick實(shí)現(xiàn)添加水印、文字的圖片功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • php上傳文件并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的方法

    php上傳文件并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了php上傳文件并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的方法,以完整實(shí)例形式較為詳細(xì)的分析了php操作文件上傳與數(shù)據(jù)庫(kù)存儲(chǔ)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 那些年我們錯(cuò)過(guò)的魔術(shù)方法(Magic Methods)

    那些年我們錯(cuò)過(guò)的魔術(shù)方法(Magic Methods)

    PHP 對(duì)象的一個(gè)優(yōu)勢(shì)是可以使用魔術(shù)方法,這些方法可以不需要修改外部代碼而重寫(xiě)一個(gè)類的默認(rèn)行為,這使得PHP 語(yǔ)法有更少的冗余性和更具有擴(kuò)展性。這些方法很好識(shí)別,他們都是以雙下劃線(__)開(kāi)始的
    2014-01-01
  • php超快高效率統(tǒng)計(jì)大文件行數(shù)

    php超快高效率統(tǒng)計(jì)大文件行數(shù)

    這篇文章主要介紹了php超快高效率統(tǒng)計(jì)大文件行數(shù)的相關(guān)資料,需要的朋友可以參考下
    2015-07-07

最新評(píng)論