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使用可以导入一个类或命名空间。 –