php中命名空間詳解

2021-09-02 08:14:58 字數 2868 閱讀 7423

* 一、定義命名空間

* 命名空間主要針對:類,函式和常量,因為他們的作用域是全域性的,產生命名衝突的可能性很大

* 1. 關鍵字: namespace

* 作用:1. 定義命名空間; 2.顯示的訪問當前命名空間,類似於self;

* 2. 常量: __namespace__: 當前命名空間字串,全域性為空字元

* 3. 宣告空間前不宜有除了declare之前的語句

namespace one;

//常量

const site = 'php是世界上最好的語言';

//函式

function house()

//類class hobby

//空間魔術常量 __namespace__

echo '當前命名空間的名稱是:'.__namespace__.'

';//訪問當前空間中的變數

//關鍵字:namespace 引入了當前空間

echo '站點名稱:'.namespace\site.'

';echo '站點名稱:'.site.'

';echo '哈哈哈'.namespace\hobby::$hobby.'

';//訪問函式

echo '訪問當前空間的函式:'.house().'

';echo '訪問當前空間的函式:'.namespace\house().'

';echo '';

//可以在乙個指令碼中建立多個命名空間

namespace two;

const domain = 'www.zbdx.cn';

class user

echo '當前命名空間的名稱是:'.__namespace__.'

';echo '站點網域名稱:'.namespace\domain.'

';echo '站點名稱'.\one\site.'

'; // 全域性空間用 \ 類似於根

//非限定名稱

echo user::$name.'

';// 限定名稱 (類似於全域性)

echo \two\user::$name.'

';//訪問one中hobby的成員,一定要從全域性開始: \

echo '我的愛好是:'.\one\hobby::$hobby;

//echo '我的愛好是:'.one\hobby::$hobby; //取不到值

//如何在當前的空間中,訪問另乙個空間中的成員呢?

//需要使用完整的命名空間名稱: 完全限定空間,從全域性空間開始,類似於檔案根目錄

//全域性空間使用 : '\' 字元表示

注:

如何在乙個指令碼中宣告多個命名空間

同乙個指令碼中,宣告了多個命名空間

namespace first

}function var_dump($name)

echo var_dump('mj'); //等價於 \first\var_dump()

echo \var_dump('mj').'

'; //如果在var_dump()前面加上 \ 說明是呼叫的php函式,否則是自己定義的函式

}namespace second

}}namespace

}echo g::haaa().'

'; echo __namespace__.'111'.'

'; //全域性命名空間名字為空

echo first\a::index().'

'; //first前的 \ 可加可不加

//換個姿勢

//使用關鍵字:namespace

echo namespace\first\a::index(), '

'; //使用魔術常量: __namespace__

echo __namespace__.\first\a::index(), '

'; echo first\var_dump('donnieking').'

';}

注:

如何匯入外部命名空間

/**

* 使用別名或引用,匯入外部的完全限定名稱

* 1.為外部的 "類" 使用別名

* 2.為外部匯入的 "命名空間" 使用別名

* 3.匯入空間或類別名,使用關鍵字:use

* 4.use 可同時匯入多個空間或類,但推薦乙個use 只匯入乙個

* * 注意

* 1. 匯入的空間必須是完全限定的,空間前不要新增:\

* 2. 匯入並不是載入檔案,當前指令碼引用的外部檔案仍要單獨載入

* 3.

* */

//匯入空間使用的關鍵字 use

namespace my_space;

require './public/user.php';

use model\user as modeluser; //匯入空間別名,預設從全域性開始,不需要再加 \

class user

echo \model\user::insert().'

'; //使用 \ 全域性下的空間

echo modeluser::insert().'

';//匯入有空間名稱的函式庫,必須是php5.6+

require './public/func.php';

//匯入公共函式庫空間中的函式delete,並起乙個短的別名: del

use function func_lib\delete as del;

echo del();

詳解PHP中的命名空間

命名空間其實早在php5.3就已經出現了。不過大部分同kierr學可能在各種框架的使用中才會接觸到命名空間的內容,當然,現代化的開發也都離不開這些能夠快速產出的框架。這次我們不從框架的角度,僅從簡單的 角度來解析一下命名空間的概念和使用。首先,我們要定義命名空間是個什麼東西。其實就像作業系統的目錄一...

php 命名空間詳解

test1.php 的內容如下 class test test2.php 的內容如下 class test index.php 的內容如下 php提示我們不能宣告 test2.php 的 test類 這是為什麼呢 其實是因為 test2.php 中的 test類 和 test1.php 中的類重名了...

PHP中命名空間不足之詳解

首先,還是簡單了解一下命名空間,定義命名空間使用namespace,引用命名空間使用use。如果在定義乙個函式或是定義乙個類的時候,不新增命名空間,預設的在根命名空間,根命名空間使用 表示,在例項化物件的時候,如果不新增命名空間,代表實力化當前命名空間中的類。class student functi...