PHP命名空間 namespace

2021-08-19 11:49:35 字數 1442 閱讀 6494

命名空間概述

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

在php中,命名空間用來解決在編寫類庫或應用程式時建立可重用的**如類或函式時碰到的兩類問題:

使用者編寫的**與php內部的類/函式/常量或第三方類/函式/常量之間的名字衝突。

為很長的識別符號名稱(通常是為了緩解第一類問題而定義的)建立乙個別名(或簡短)的名稱,提高源**的可讀性。

我的專案目錄結構如下:

index.php需要同時使用test1\test.phptest2\test.php,如果不用命名空間,由於兩個類都同名,則會報錯。

vendor\test1\test.php

<?php 

namespace vendor\test1;

class test

}

vendor\test2\test.php

<?php 

namespace vendor\test2;

class test

}

index.php

<?php 

spl_autoload_register(function($class)

}});

$test = new \vendor\test1\test();

$test->path();

$test2 = new \vendor\test2\test();

$test2->path();

輸出如下:

d:\www\learning\vendor\test1

d:\www\learning\vendor\test2

全域性命名空間
如果沒有定義任何命名空間,所有的類與函式的定義都是在全域性空間,與 php 引入命名空間概念前一樣。在名稱前加上字首 \ 表示該名稱是全域性空間中的名稱,即使該名稱位於其它的命名空間中時也是如此。

深入剖析js命名空間函式namespace

生成命名空間的方法繫結到jquery上 阿里員工寫的開源資料庫連線池的druid的源 時,發現了其中在jquery的原 中又定義了乙個命名空間的函式 namespace 其 如下 namespace druid.index druid.index function submit function 使...

C 的記憶體模型以及命名空間 namespace

1.儲存連續性 在c 中使用四種不同的方案來儲存資料 2.靜態成員變數的記憶體分配 如果乙個類中有靜態成員 static 注意,不能在類的宣告中初始化靜態成員,這是因為宣告只是描述了如何分配記憶體,而並沒有分配記憶體,所以,對於靜態成員的初始化,需要在類的宣告之外進行 所以,靜態成員在類的宣告中宣告...

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

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