今天碰到一個關於命名空間的錯誤,在這裏總結一下
(1)命名空間是什麼?
NameSpace(名字空間),之所以出來這樣一個東西,是因爲人類可用的單詞數太少,並且不同的人寫的程序不可能所有的變量都沒有重名現象,對於庫來說,這個問題尤其嚴重,如果兩個人寫的庫文件中出現同名的變量或函數(不可避免),使用起來就有問題了。爲了解決這個問題,引入了名字空間這個概念,通過使用
namespace xxx;你所使用的庫函數或變量就是在該名字空間中定義的,這樣一來就不會引起不必要的衝突了
(2)命名空間的作用
一個namespace就相當於對應一個文件路徑,查找這個類的時候,就會去對應的文件路徑查找類定義文件了
(3)use是幹嘛的?
命名空間是運行時解析的。use就相當於一種聲明,並不解析和加載。
(4)全局類和命名空間類
如果要new一個全局類使用 new \類名()
如果要new一個命名空間類,使用new my\namespace\類名()
(5)實際列子
首先我們用的是tp框架
那麼我們會在控制層中建立一個xxxController.class.php
這個文件的路徑是Home/Controller下面是代碼引用實例
namespace Home\Controller; 這個文件使用的命名空間是home下的controller
use Think\Controller; 聲明這個類
use Common\Out_put\Output_AllSql as out; 同樣聲明這個類
其次我們會建一個公共類下的文件夾這個文件夾中包含我們的數據庫操作語句mmm.class.php
這個文件的路徑是Common/自己命名的文件夾/你寫的類文件mmm.class.php
namespace Common\Out_put; 這個文件我就是建在common下的Out_put文件夾中