命名空間概述
這是只是大概講一下用法,如果想詳細了解,還是閱讀官方手冊比較好。什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以同時在目錄/home/greg 和 /home/other 中存在,但在同乙個目錄中不能存在兩個 foo.txt 檔案。另外,在目錄 /home/greg 外訪問 foo.txt 檔案時,我們必須將目錄名以及目錄分隔符放在檔名之前得到 /home/greg/foo.txt。這個原理應用到程式設計領域就是命名空間的概念。
版本要求
php5.3.0
以上,包含php5.3.0
開始講解
新建a.php
,b.php
檔案
## 這是a.php
namespace
a\b\c; // 說明這個類存在於 a\b\c 這個命名空間下
class
function
get_func
()}
## 這是b.php
namespace
a\b\d; // 說明這個類存在於 a\b\d 這個命名空間下
class
function
get_func
()}
我們再新建乙個test.php
去呼叫上面這兩個類
## 這是test.php
require_once
"./a.php";
require_once
"./b.php";
// 如果沒有命名空間,直接引入,會報類重複的錯誤
// 那我們該如何例項化上面類呢?
echo
// 這種方法是可以的,但是試想如果我們同個頁面要多次例項化此類,這樣是非常耗資源的。
## 這是test.php
require_once
"./a.php";
require_once
"./b.php";
useecho
echo
echo
// 這樣寫同樣也是可以的,而且會比上面那種方法省資源
// 在這裡思考一下,如果想執行b.php檔案的類,該怎麼執行呢?
## 這是test.php
require_once
"./a.php";
require_once
"./b.php";
use.....(此處省略,上面重複).....
echo
// 如果我們也像使用上面那種方法引入b.php檔案的類,該如何做到呢?
## 這是test.php
require_once
"./a.php";
require_once
"./b.php";
useuse
asecho
echo
// 同樣,這也成功輸出了
這時我們新建乙個c.php
檔案
## 這是c.php
class
function
get_func()}
// 我們沒有在這個類檔案下配命名空間
## 這是test.php
require_once
"./a.php";
require_once
"./b.php";
require_once
"./c.php";
use.....(此處省略,上面重複).....
// 如果沒有配命名空間,代表根類,就得這樣例項化,就可以成功找到了
對PHP命名空間的理解
最早的php是沒有命名空間的,所有php 存在同乙個命名空間之下,這樣的話就不能存在相同的類或者相同的函式。但是當我們的工程越來越大的時候,由此產生的衝突會越來越多。php5.3之後增加了對命名空間的支援,宣告命名空間名使用namespace 名稱,宣告必須在整個 之前。命名空間解決了我們多個檔案使...
php命名空間實現的理解
前言 之前測試命名空間,檔案頭部明明定義了namespace,並且類檔案的存放位置與相對路徑也一致,但use之後仍提示 找不到類 為什麼?原理分析 1.根據use的值確定類檔案的物理儲存位置,然後通過require one將類檔案載入 2.類檔名稱與類名稱需要有一定的對應規則,方便autoload方...
關於php命名空間的理解
理解命名空間首先要知道命名空間的作用,也就是它的出現解決了那些問題 官方給出的解決的問題是 使用者編寫的 與php內部的類 函式 常量或第三方類 函式 常量之間的名字衝突。為很長的識別符號名稱 通常是為了緩解第一類問題而定義的 建立乙個別名 或簡短 的名稱,提高源 的可讀性。可以看下這篇文章 從th...