命名空間php
◆徹底限定名稱(Fully-qualified name)函數
任何PHP代碼均可以引用徹底限定名稱,它是一個以命名空間反斜線開頭的標識符,如\App\Lib1\MYCONST,\App\Lib2\MyFunction( )等。ui
徹底限定名稱是沒有任何歧義的,開頭的反斜線和文件路徑的做用有點相似,它表示「根」全局空間,若是咱們在全局空間中實現了一個不一樣的MyFunction( ),能夠使用\MyFunction( )從lib1.php或lib2.php調用它。spa
徹底限定名稱對一次性函數調用或對象初始化很是有用,但當你產生了大量的調用時它們就沒有實用價值了,在下面的討論中咱們將會看到,PHP提供了其它選項以解除咱們爲命名空間打字的煩惱。code
◆限定名稱(Qualified name)對象
至少有一個命名空間分隔符的標識符,如Lib1\MyFunction( )。blog
◆非限定名稱(Unqualified name)字符串
沒有命名空間分隔符的標識符,如MyFunction( )。io
__NAMESPACE__是一個PHP字符串,它老是返回當前命名空間的名稱,在全局空間中它是一個空字符串function
namespace關鍵字能夠用於明確引用一個當前命名空間或子命名空間中的項目,它等價於類中的self命名空間
小例子命名空間
入口文件 name.php
<?php function __autoload($name) { $name = str_replace("\\", '/', $name.".class.php"); require_once(dirname(__FILE__).'/'.$name); } use test\user as mc; $m = new mc(); var_dump($m); $m-> user2();
./test/user.class.php文件
<?php namespace test; class user { function user() { echo 'new'; } function user2() { echo '@@@@'; } }
結果
]
構造函數要用__construct() ,才能夠調用到數據