php命名空間的理解

2021-07-16 04:12:04 字數 2139 閱讀 8822

命名空間概述

這是只是大概講一下用法,如果想詳細了解,還是閱讀官方手冊比較好。

什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以同時在目錄/home/greg 和 /home/other 中存在,但在同乙個目錄中不能存在兩個 foo.txt 檔案。另外,在目錄 /home/greg 外訪問 foo.txt 檔案時,我們必須將目錄名以及目錄分隔符放在檔名之前得到 /home/greg/foo.txt。這個原理應用到程式設計領域就是命名空間的概念。

版本要求

php5.3.0以上,包含php5.3.0

開始講解

新建a.phpb.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...