[前言]
之前測試命名空間,檔案頭部明明定義了namespace,並且類檔案的存放位置與相對路徑也一致,但use之後仍提示「找不到類」,為什麼?
[原理分析]
1.根據use的值確定類檔案的物理儲存位置,然後通過require_one將類檔案載入;
2.類檔名稱與類名稱需要有一定的對應規則,方便autoload方法找到並載入類檔案;
3.類檔案的namespace值需要與實際相應路徑一致。
4.常見錯誤:類檔案的namespace值與實際路徑不一致,類名稱與類檔名稱沒有對應關係。
[示例目錄結構]
namespacedemo
--mk.php
--libs
---demo.class.php
[示例**]
mk.php
<?php直接訪問mk.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()
}
php命名空間的理解
命名空間概述這是只是大概講一下用法,如果想詳細了解,還是閱讀官方手冊比較好。什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以...
對PHP命名空間的理解
最早的php是沒有命名空間的,所有php 存在同乙個命名空間之下,這樣的話就不能存在相同的類或者相同的函式。但是當我們的工程越來越大的時候,由此產生的衝突會越來越多。php5.3之後增加了對命名空間的支援,宣告命名空間名使用namespace 名稱,宣告必須在整個 之前。命名空間解決了我們多個檔案使...
關於php命名空間的理解
理解命名空間首先要知道命名空間的作用,也就是它的出現解決了那些問題 官方給出的解決的問題是 使用者編寫的 與php內部的類 函式 常量或第三方類 函式 常量之間的名字衝突。為很長的識別符號名稱 通常是為了緩解第一類問題而定義的 建立乙個別名 或簡短 的名稱,提高源 的可讀性。可以看下這篇文章 從th...