站長資訊網
        最全最豐富的資訊網站

        php命名空間use關鍵字怎么用

        在php中,use關鍵字可以用來導入命名空間,語法“use namespace;”;也可用來導入函數和常量,并為它們設置別名,語法“use 命名空間 as 別名;”。

        php命名空間use關鍵字怎么用

        本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦

        什么是命名空間?

        從廣義上來說,命名空間是一種封裝事物的方法,在很多地方都可以見到這種抽象概念。例如,在操作系統中目錄用來將相關文件分組,對于目錄中的文件來說,它就扮演了命名空間的角色。

        命名空間的定義

        PHP 中命名空間(namespace)是在 PHP5.3 中加入的,如果你了解過 C++ 的話,那命名空間就不算什么新事物了。不過命名空間在 PHP 當中還是相當重要的。

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

        • 用戶編寫的代碼與 PHP 內部的類/函數/常量或第三方類/函數/常量之間的命名沖突;

        • 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,以提高源代碼的可讀性。

        定義命名空間(使用關鍵字 namespace)

        雖然任意合法的 PHP 代碼都可以包含在命名空間中,但只有類(包括抽象類和 traits)、接口、函數和常量等類型的代碼受命名空間的影響。

        命名空間的定義需要通過關鍵字 namespace 來聲明,語法格式如下:

        namespace 命名空間名;

        【示例】下面我們來演示一下如何定義了命名空間:

        <?php     namespace MyProject;    // 定義名為 MyProject 的命名空間。     const CONNECT_OK = 1;     class Myclass {         /* ... */     }     function Myfunc() {         /* ... */     } ?>

        在聲明命名空間之前除了用于定義源文件編碼方式的 declare 語句外,所有非 PHP 代碼(包括空白符)都不能出現在命名空間聲明之前。

        使用命名空間:別名/導入

        PHP 允許通過別名引用或導入的方式來使用外部的命名空間,這是命名空間的一個重要特征。這有點類似于在類 unix 文件系統中可以創建對其它的文件或目錄的符號連接。

        使用 use 關鍵字可以實現命名空間的導入,從 PHP5.6 開始允許導入函數和常量,并為它們設置別名。語法格式如下:

        use namespace;

        在 PHP 中,別名是通過操作符 use 與 as 來實現的,語法格式如下:

        use 命名空間 as 別名;

        【示例】使用 use 操作符導入和使用別名。

        <?php     namespace foo;     use MyFullClassname as Another;     // 下面的例子與 use MyFullNSname as NSname 相同     use MyFullNSname;     // 導入一個全局類     use ArrayObject;     // 導入一個函數     use function MyFullfunctionName;     // 導入一個函數并定義別名     use function MyFullfunctionName as func;     // 導入一個常量     use const MyFullCONSTANT;     $obj = new namespaceAnother;   // 實例化 fooAnother 對象     $obj = new Another;             // 實例化 MyFullClassname 對象     NSnamesubnsfunc();            // 調用 MyFullNSnamesubnsfunc 函數     $a = new ArrayObject(array(1)); // 實例化 ArrayObject 對象                                     // 如果不使用 "use ArrayObject" ,則實例化一個 fooArrayObject 對象     func();                         // 調用 MyFullfunctionName 函數     echo CONSTANT;                  // 打印 MyFullCONSTANT 常量 ?>

        注意:對命名空間中的名稱(包含命名空間分隔符的完全限定名稱,如 FooBar ,以及相對的不包含命名空間分隔符的全局名稱,如 FooBar)來說,前導的反斜杠是不必要的也是不推薦的,因為導入的名稱必須是完全限定的,不會根據當前的命名空間作相對解析。

        為了簡化操作,PHP 還支持在一行中導入多個命名空間,中間使用,隔開,示例代碼如下:

        <?php     use MyFullClassname as Another, MyFullNSname;     $obj = new Another;     // 實例化 MyFullClassname 對象     NSnamesubnsfunc();    // 調用 MyFullNSnamesubnsfunc 函數 ?>

        導入操作是編譯執行的,但動態的類名稱、函數名稱或常量名稱則不是。

        <?php     use MyFullClassname as Another, MyFullNSname;     $obj = new Another; // 實例化一個 MyFullClassname 對象     $a = 'Another';     $obj = new $a;      // 實際化一個 Another 對象 ?>

        另外,導入操作只影響非限定名稱和限定名稱。完全限定名稱由于是確定的,故不受導入的影響。

        推薦學習:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品无人区麻豆乱码1区2区 | 3级黄性日本午夜精品| 97国产精品视频| 国产精品一级香蕉一区| 国产精品欧美一区二区三区| 久久久久99精品成人片牛牛影视| 日韩精品无码中文字幕一区二区| 国产精品va无码一区二区| 2021国产三级精品三级在专区| 日韩精品无码Av一区二区| 久久精品国产清高在天天线| 青青草国产精品久久| 香蕉99久久国产综合精品宅男自| 国产精品内射后入合集| 国产人成精品综合欧美成人| 无码国内精品久久人妻| 亚洲国产精品久久久久网站| 午夜精品久久久久9999高清| 99国产精品久久久久久久成人热| 精品国产AⅤ一区二区三区4区| 人人妻人人澡人人爽精品日本| 欧美国产日本精品一区二区三区| 免费精品久久久久久中文字幕 | 97久人人做人人妻人人玩精品 | 亚洲国产精品成人精品无码区在线| 国产福利精品一区二区| 国产精品一区三区| 色妞ww精品视频7777| 国产99久久久国产精品~~牛| 亚洲精品成人网站在线观看| 四虎成人www国产精品| 一本一道精品欧美中文字幕| 91精品国产91久久久久久蜜臀 | 欧美精品国产日韩综合在线| 亚洲国产精品成人午夜在线观看| 精品国产福利第一区二区三区| 亚洲午夜精品久久久久久app | 98精品国产自产在线XXXX| 成人午夜视频精品一区| 中文字幕一区二区精品区| 亚洲AV无码精品色午夜在线观看|