php命名空間namespace詳解

2021-03-02 PHP自學中心


PHP的命名空間(namespace)是PHP 5.3中加入最重要的一個新特性

一. PHP的命名空間主要解決三種衝突的問題:常量,函數,類

簡單來說:namespace就相當於是用來建一個目錄,將namespace下面的代碼放在該目錄裡面,與外面的區分開來。

例如:

/**

*namespace 之前不能有任何代碼,除了declare();多個文件可以使用同一個命名空間,但同一命名空間下定義的內容是不能衝突的。namespace支持子命名空間,如:namespace \myself\good,相當於多級目錄的概念。

<?php

namespace myself;

function var_dump()

{

echo 100;

}

var_dump();     //調用自定義函數(相對路徑方式)

\myself\var_dump();    //調用自定義函數(絕對路徑方式)

\var_dump(100); //調用全局的(系統的函數)

?>

二. 同一文件中存在多個命名空間的情況

/**

* 同一文件中若使用了多個命名空間,一般寫法

*/

namespace nihao\shijie;

function demo()

{

  //..

}

namespace hello\world;

function test()

{

//...

}

\nihao\shijie\demo();

\hello\world\test();

/**

* 同一文件中若使用了多個命名空間,建議大括號擴起來

* 同一文件內使用多個命名空間,主要用於項目將多個PHP腳本合併在同一文件中,實際中不提倡使用!

*/

namespace nihao\shijie{

  function test_one()

  {

//.

  };

}

namespace hello\world{

  function test_two()

  {

//...

  }

}

\nihao\shijie\test_one();

\hello\world\test_two();

三. 名稱解析規則(幾個概念)

1.非限定名稱:名稱中不包含命名空間分割符,如:myself

2.限定名稱:名稱中含有命名空間分割符,如:nihao\shijie

3.完全限定名稱:名稱中包含分割符,並以命名空間分割符開始,如:\nihao\shijie (即絕對路徑的概念)

四.使用命名空間

1.use關鍵字目的是使用命名空間的別名:

use \nihao\shijie as shijie

2.及時在一個命名空間要使用另一個文件中的類或者方法都需要include或者require需要的文件


相關焦點

  • php的自動加載和命名空間
    命名空間命名空間是為了解決命名衝突的問題。使用命名空間只是讓類名有了前綴,不容易發生衝突,系統仍然不會進行自動導入。spl_autoload一旦調用 spl_autoload_register() 函數,當調用未定義類時,系統就會按順序調用註冊到 spl_autoload_register() 函數的所有函數,而不是自動調用 __autoload() 函數。
  • 【基礎】PHP為什麼要使用命名空間
    聲明了命名空間之後,下面的const, function, class都會劃歸到該命名空間。2. 只有聲明過命名空間的PHP 文件才能加載有命名空間的PHP文件。3.PHP 5.3 及以上才能使用命名空間 名詞:    關鍵字:namespace 用來聲明 本PHP文件的命名空間    常量:__NAMESPACE__ 用來返回當前命名空間的名稱 默認為空字符串    操作符: use 默認以最後一個\後的字符串為別名,配合 as 則為 as後的字符串,與MySQL
  • C++命名空間namespace的理解
    1、命名空間的概念C語言中,只有一個全局作用域,所有全局標識符共享一個作用域,因此絕對不能重名。但隨著系統越來越複雜,通常不會僅由一個人來開發,不同的人開發同一個系統,不可避免地會出現變量或函數的命名衝突,當將所有人的代碼結合到一起時,就會因為變量或函數重名,導致編譯失敗。
  • [基礎] 特別要注意:PHP注釋語法規範與命名規範詳解
    或許你早就知道如何用,或許對你有些許幫助,可是最後還是感謝你的關注鞏固php基礎,分享給你視頻教程【PHP7.x入門到進階,初學者直接獲取!】,公眾號裡回覆:20200202   免費領取提取碼!注釋在寫代碼的過程中非常重要,好的注釋能讓你的代碼讀起來更輕鬆,在寫代碼的時候一定要注意注釋的規範。
  • php變量是什麼?php變量的數據類型、命名規則等詳細介紹
    本篇將介紹「php變量是什麼?php變量的數據類型、命名規則以及php變量的使用教程」,有興趣的朋友可以了解一下!一、前言php是一門開源的腳本語言,它的語法簡單實用,利於學習,被廣泛的使用於Web開發領域。目前很多中小型網站都是使用php語言開發的,如果我們能學好php語言,也是很有前途的。今天小編為什麼要介紹php變量?
  • php反序列化
    常見於php腳本使用php_serialize,而php.ini默認使用php,比如下面這種情況。1.php<?如果反過來php.ini使用php_serialize,php腳本使用php,則更容易利用。<?
  • [視頻] PHP7.x入門到進階,初學者直接獲取!
    只要你註冊一個帳號,回復一下帖子就可以看到今天要分享的視頻教程【PHP7入門到進階】,此套教程基於php7,著重講解,從基礎到實戰。22  字符串函數trim-ucfirst-ucwords-strtolower23  字符串函數md5-explode-implode-substr-mb_substr24  PHP常量使用詳解25  算術運算符26  賦值運算符27  比較運算符與邏輯運算符28  三元表達式??
  • C++系列2-1:C++快速入門之命名空間和輸入輸出
    命名空間可以有效的解決這個問題,使用命名空間目的在於將標識符的名稱本地化,以免衝突。簡單點來說,把名字關進「小黑屋」,你的和我的即便名字是一樣的,但是本質是不一樣的,使用時按照一定方式打開「小黑屋」(2)命名空間的定義A:命名空間的定義定義命名空間時,要使用namespace關鍵字,其後緊接該命名空間的名字,然後寫上「{}」,括號內即是該命名空間的成員。有點像結構體。
  • PHP中__get()方法詳解
    相關:《__construct(),類的構造函數》《__destruct(),類的析構函數》《__call()方法詳解》《__callStatic()方法詳解》PHP中__get(),獲得一個類的成員變量時調用在 php 面向對象編程中,類的成員屬性被設定為 private
  • Linux namespace之:pid namespace
    理解pid namespacePID namespace表示隔離一個具有獨立PID的運行環境。在每一個pid namespace中,進程的pid都從1開始,且和其他pid namespace中的PID互不影響。這意味著,不同pid namespace中可以有相同的PID值。
  • Linux namespace 系列:初識 namespace
    Linux namespace 是 Linux 提供的一種內核級別環境隔離的方法。Linux namespace 將全局系統資源封裝在一個抽象中,從而使 namespace 內的進程認為自己具有獨立的資源實例。
  • 怎麼理解php中的變量?php變量命名注意什麼?
    簡單理解變量是臨時存儲值的容器,它可以儲存數字、文本、和一些複雜的數據(比如說字符串、複雜的排列組合等),變量在php語言中居於核心地位,是使用php的關鍵所在,變量的值在程序運行中會隨時發生變化,能夠把程序中準備使用的一段數據起一個簡短容易記得名字,另外它還可以保存用戶輸入數據和特點運算的結果,總結變量是變量是用於跟蹤幾乎所有類型信息的簡單工具。
  • C++標準庫和std命名空間
    早期的 C++ 還不完善,不支持命名空間,沒有自己的編譯器,而是將C++代碼翻譯成C代碼,再通過C編譯器編譯成目標代碼。這個時候的C++仍然在使用C語言庫,此外還開發了一些新的庫,增加了不少頭文件,例如:iostream.h:輸入輸出頭文件。fstream.h:文件操作頭文件。wchar.h:寬字符處理頭文件。
  • c++之內存分配、命名空間、強制類型轉換學習總結
    >    delete pc;   return 0;}輸出結果:*pi=1*pf=2.000000*pc=c三、c++ 中的命名空間-c++中提出了命名空間的概念:命名空間將全局作用域分成不同的部分。不同命名空間中的標識符可以同名而且不會發生衝突。
  • PHP 垃圾回收機制詳解
    PHP strtotime應用經驗之談PHP memory_get_usage()管理內存PHP unset全局變量運用問題詳解PHP unset()函數銷毀變量教你快速實現PHP全站權限驗證一、PHP 垃圾回收機制(Garbage Collector 簡稱GC) 在PHP中,沒有任何變量指向這個對象時,這個對象就成為垃圾。
  • php 序列化與反序列化
    反序列化的問題,打算這篇文章寫一下php反序列化。 當然php也不例外,除了上述描述的魔術方法以外,序列化一個對象將會保存對象的所有變量,但是不會保存對象的方法,只會保存類的名字,並且靜態變量不支持序列化。
  • 使用composer實現php自動加載的一種方式
    然後我們在libaray和Model目錄下創建兩個演示類文件,創建後的目錄結構:User.php的內容:Hello.php的內容:index.php裡面的內容:可以看出,我們在Hello類的index方法裡調用了
  • PHP八大設計模式
    Test1.php <?php class Test1{ static function test(){ echo __FILE__; } } Factory.php <?
  • PHP編碼風格規範詳細介紹
    php或<?=標籤開始。換言之,我們不應該再使用短標籤<?或其它變化形式。2、副作用PHP文件要麼聲明類、接口、函數等,要麼執行邏輯操作(如讀寫文件或向瀏覽器發送輸出),但不應該同時兼具兩者。3、命名類的命名必須遵守大寫開頭的駝峰式命名規範。