7
當使用PEAR和Zend的僞命名空間格局,是很常見的遇到類heirarchies看起來像這樣:當名稱空間和類在PHP中共享名稱時會發生什麼?
Zend/
Db.php
Db/
Expr.php
凡db.php中包含一個名爲Zend_Db
和類Expr.php包含了一個名爲類Zend_Db_Expr
。但是,當您嘗試將舊的5.2 psuedo命名空間轉換爲PHP 5.3命名空間時,會出現命名空間和類共享名稱的情況。由於使用操作符可以導入命名空間或類名,所以會導致含糊不清。
下面是關於轉換的應用程序,我工作的一個例子:
App/
Core.php
Core/
Autoloader.php
這裏的基本目錄和命名空間的應用程序。在名稱空間的頂層是一個Core
類:
namespace App;
class Core { }
核心目錄其他各種核心類,其中一些使用主Core
。在僞命名空間模式下,這不是問題。但在現實的命名空間格局會創建這樣的情況:
namespace App\Core;
use App\Core as Core; // What is this importing? Namespace or class?
class Autoloader {
public function __construct(Core $core) {}
}
是這樣定義呢?這裏實際導入了什麼?
什麼問題?我不認爲你可以導入一個命名空間。你總是導入一個類,並給它一個別名。 –
http://php.net/manual/en/language.namespaces.importing.php使用可以導入一個類或命名空間。 –