PHP中命名空間不足之詳解

2021-07-11 01:46:22 字數 1789 閱讀 9498

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

class student	

}function test($params)

$s1=new student();//例項化當前命名空間中的類,當前命名空間為根命名空間

$s1->showname();

test('s1'); //呼叫當前命名空間中的函式

$s2=new \student(); //例項化根命名空間中的類

$s2->showname();//呼叫根命名空間中的函式

\test('s2');

下面通過兩個例子來展示命名空間解決同名類和同名函式的問題

檔案index1.php

namespace henan\school;

class student

}function test()

namespace hubei\school;class student} function test()

檔案index.php

include "index1.php";

$s1=new \henan\school\student();//也可以使用$s1=new henan\school\student();,因為當前命名空間是根空間,所以可以省略\,為了**嚴謹性,推薦加上\

$s1->showname();

\henan\school\test();

$s2=new \hubei\school\student();

$s2->showname();

\hubei\school\test();

當命名空間遇到同名變數和同名常量時候,確束手無策了

檔案index1.php

namespace henan\school;

$params='i am from henan';

namespace hubei\school;

$params='i am from hubei';

檔案index.php

include "index1.php";

echo $params; //i am from hubei

echo '

';use \henan\school as curschool1;

echo $params; //i am from hubei

echo '

';use \hubei\school as curschool2;

echo $params; //i am from hubei

echo '

';

這說明乙個道理,在php的各個命名空間中的變數是相互通用的,就相當於定義在根命名空間下,或者說php中的變數,沒有命名空間之分。常量也是這樣的,看下面指令碼

namespace henan\school;

define('fromwhere', 'henan');

namespace hubei\school;

define('fromwhere', 'hubei');//將會報錯,提示fromwhere已經定義

備註:筆者當前使用php版本為5.5.12

php中命名空間詳解

一 定義命名空間 命名空間主要針對 類,函式和常量,因為他們的作用域是全域性的,產生命名衝突的可能性很大 1.關鍵字 namespace 作用 1.定義命名空間 2.顯示的訪問當前命名空間,類似於self 2.常量 namespace 當前命名空間字串,全域性為空字元 3.宣告空間前不宜有除了dec...

詳解PHP中的命名空間

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

php 命名空間詳解

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