PHP命名空間的作用 為什麼使用命名空間?

2021-08-19 16:29:19 字數 2281 閱讀 2649

命名空間乙個最明確的目的就是解決重名問題,php中不允許兩個函式或者類出現相同的名字,否則會產生乙個致命的錯誤。這種情況下只要避免命名重複就可以解決,最常見的一種做法是約定乙個字首。

可以看到,名字變得很長,那意味著以後使用comment的時候會寫上更多的**(至少字元多了)。並且,以後如果要對各個模組增加更多的一些整合功能,或者是互相呼叫,發生重名的時候就需要重構名字。當然在專案開始的時候就注意到這個問題,並規定命名規則就能很好的避免這個問題。另乙個解決方法可以考慮使用命名空間。

基礎

命名空間將**劃分出不同的空間(區域),每個空間的常量、函式、類(為了偷懶,我下邊都將它們稱為元素)的名字互不影響, 這個有點類似我們常常提到的『封裝'的概念。

建立乙個命名空間需要使用namespace關鍵字,這樣:

複製****如下:

<?php

//建立乙個名為'article'的命名空間

namespace article;

?>

複製****如下:

//例一

//在指令碼前面寫了一些邏輯**

<?php

$path = "/";

class comment

namespace article;

?>

//例二

//在指令碼前面輸出了一些字元

<?php

namespace article;

?>

為什麼要說第乙個命名空間呢?因為同一指令碼檔案中可以建立多個命名空間。

下面我建立了兩個命名空間,順便為這兩個空間各自新增了乙個comment類元素:

複製****如下:

<?php

//建立乙個名為'article'的命名空間

namespace article;

//此comment屬於article空間的元素

class comment

//建立乙個名為'messageboard'的命名空間

namespace messageboard;

//此comment屬於messageboard空間的元素

class comment

?>

在不同空間之間不可以直接呼叫其它元素,需要使用命名空間的語法:

複製****如下:

<?php

namespace article;

class comment

namespace messageboard;

class comment

//呼叫當前空間(messageboard)的comment類

$comment = new comment();

//呼叫article空間的comment類

$article_comment = new \article\comment();

?>

可以看到,在messageboard空間中呼叫article空間裡的comment類時,使用了一種像檔案路徑的語法: \空間名\元素名

除了類之外,對函式和常量的用法是一樣的,下面我為兩個空間建立了新的元素,並在messageboard空間中輸出了它們的值。

複製****如下:

<?php

namespace article;

const path = '/article';

function getcommenttotal()

class comment

namespace messageboard;

const path = '/message_board';

function getcommenttotal()

class comment

//呼叫當前空間的常量、函式和類

echo path; ///message_board

echo getcommenttotal(); //300

$comment = new comment();

//呼叫article空間的常量、函式和類

echo \article\path; ///article

echo \article\getcommenttotal(); //100

$article_comment = new \article\comment();

?>

然後我的確得到了article空間的元素資料。

子空間

命名空間的呼叫語法像檔案路徑一樣是有道理的,它允許我們自定義子空間來描述各個空間之間的關係。

php 命名空間,PHP使用命名空間

介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...

什麼是php命名空間

php命名空間是在5.3版本後加入的,命名空間反過來就是空間命名,在這裡的空間命名就像window下的資料夾命名,命名空間用關鍵字namespace來定義。在這裡用資料夾舉三個例子,比如相對於test資料夾下面的home.txt檔案,他相對於資料夾的路徑是 test home.txt,當前檔案下他的...

php命名空間的基本使用

1.命名空間概述。1.1什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到 這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它 就扮演了命名空間的角色。具體舉個例子,檔案.txt 可以同時在目錄 home greg 和 home other...