首先,還是簡單了解一下命名空間,定義命名空間使用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 中的類重名了...