php命名空間實現的理解

2021-09-19 18:58:26 字數 868 閱讀 4907

[前言]

之前測試命名空間,檔案頭部明明定義了namespace,並且類檔案的存放位置與相對路徑也一致,但use之後仍提示「找不到類」,為什麼?

[原理分析]

1.根據use的值確定類檔案的物理儲存位置,然後通過require_one將類檔案載入;

2.類檔名稱與類名稱需要有一定的對應規則,方便autoload方法找到並載入類檔案;

3.類檔案的namespace值需要與實際相應路徑一致。

4.常見錯誤:類檔案的namespace值與實際路徑不一致,類名稱與類檔名稱沒有對應關係。

[示例目錄結構]

namespacedemo

--mk.php

--libs

---demo.class.php

[示例**]

mk.php

<?php

namespace mk;

/*命名空間支援 start*/

function autoload($relativepath)

}spl_autoload_register('\mk\autoload');

/*命名空間支援 end*/

use \mk\libs\demo;

demo.class.php

<?php

//namespace 必須與類檔案實際相應路徑一致

namespace mk\libs;

//類檔名與類名需要有一定的對應關係

class demo

catch (\exception $e) catch (\error $e)

}private function index()

}

直接訪問mk.php,將會呼叫相關方法。

php命名空間的理解

命名空間概述這是只是大概講一下用法,如果想詳細了解,還是閱讀官方手冊比較好。什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以...

對PHP命名空間的理解

最早的php是沒有命名空間的,所有php 存在同乙個命名空間之下,這樣的話就不能存在相同的類或者相同的函式。但是當我們的工程越來越大的時候,由此產生的衝突會越來越多。php5.3之後增加了對命名空間的支援,宣告命名空間名使用namespace 名稱,宣告必須在整個 之前。命名空間解決了我們多個檔案使...

關於php命名空間的理解

理解命名空間首先要知道命名空間的作用,也就是它的出現解決了那些問題 官方給出的解決的問題是 使用者編寫的 與php內部的類 函式 常量或第三方類 函式 常量之間的名字衝突。為很長的識別符號名稱 通常是為了緩解第一類問題而定義的 建立乙個別名 或簡短 的名稱,提高源 的可讀性。可以看下這篇文章 從th...