php命名空間

php命名空間
命名空間的定義必須在php文件的第一行,之前不能有任何輸出,多個文件中可定義同一個命名空間,但在同一個命名空間中不能有相同的類或函數
定義命名空間:namespace n1\n2;
通常來說,命名空間的名字根據文件所在的路徑來取,但這並不是必須的,根據路徑來取名字是一種好的規範


在使用某個命名空間裏的類,函數時,首先要包含這個命名空間所在的文件,然後根據規則使用之,例如:
a.php:
namespace a;
class Test(){}
----------------------------------------

b.php:
namespace b;
include 'a.php';
$obj = new \a\Test();
//使用use,use只對類名有效
$obj = new Test();//如果這樣用需要在前面加上一句use \a\Test;
$obj = new T();//如果這樣用需要在前面加上一句use \a\Test as T;


//另外

foo();//表示\b\foo()
\foo();//表示全局函數foo()
a\foo();//表示\b\a\foo()

\a\foo();//表示\a\foo()


自動加載與命名空間:

函數spl_autoload_register用於註冊自動加載函數,當PHP解析到不存在的類時會自動調用加載函數,將類名及命名空間傳進去

加載函數是自己定義的,我們可以在加載函數中自定義加載規則,一般都是根據傳進來的命名空間來包含相應目錄下的類文件,這樣就不用手動使用

require或者include去手動包含文件了,在框架裏都是這麼做的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章