test1.php 的內容如下
<?php
class
test
}
test2.php 的內容如下<?php
class
test
}
index.php 的內容如下<?php
php提示我們不能宣告 test2.php 的 test類
這是為什麼呢 其實是因為 test2.php 中的 test類 和 test1.php 中的類重名了 系統不知道該呼叫哪乙個現在我們為 test1.php 加上命名空間
<?php
namespace
space\test1;
class
test
}
同理 test2.php<?php
namespace
space\test2;
class
test
}
這是為什麼呢 其實是因為 我們加了namespace 命名空間以後 系統會自動識別 test1.php 的test類 是space\test1裡面的 而test2.php 的test類 是space\test2裡面的 他們是不同的
<?php
require_once('test1.php');
require_once('test2.php');
$test1 = new \space\test1\test();
$test2 = new \space\test1\test();
$test1->say();
$test2->say();
執行後得到
我們會發現 執行完美成功
use 的作用是設定我們預設使用的命名空間
<?php
require_once('test1.php');
require_once('test2.php');
usespace\test1\test;
$test1 = new test();
$test1->say();
然後 我們在 訪問 index.php
完美 果然 把 test1.php 中的 test類 給例項化出來了
是像下面這樣來實現嗎
大家光看** 就知道 肯定不能 這樣來實現了 因為編譯器 已經報錯了
因為這樣的話 系統又會像沒有加命名空間一樣 不知道該呼叫哪乙個 test類了
為了 解決 這個問題 所以 php 又給我們 推出了 乙個 和use 關鍵字連用的關鍵字 as
as的用法是為命名空間取乙個別名
<?php
require_once('test1.php');
require_once('test2.php');
usespace\test1\test;
usespace\test2\test
astest2;
$test1 = new test();
$test2 = new test2();
$test1->say();
$test2->say();
現在我們在呼叫 index.php
完美執行
php中命名空間詳解
一 定義命名空間 命名空間主要針對 類,函式和常量,因為他們的作用域是全域性的,產生命名衝突的可能性很大 1.關鍵字 namespace 作用 1.定義命名空間 2.顯示的訪問當前命名空間,類似於self 2.常量 namespace 當前命名空間字串,全域性為空字元 3.宣告空間前不宜有除了dec...
詳解PHP中的命名空間
命名空間其實早在php5.3就已經出現了。不過大部分同kierr學可能在各種框架的使用中才會接觸到命名空間的內容,當然,現代化的開發也都離不開這些能夠快速產出的框架。這次我們不從框架的角度,僅從簡單的 角度來解析一下命名空間的概念和使用。首先,我們要定義命名空間是個什麼東西。其實就像作業系統的目錄一...
php 命名空間,PHP使用命名空間
介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...