是否可以执行以下操作:
"psr-4": {
"App\\": "src/",
"Tech\\": "src/Tech/"
}
如您所见,App
文件夹中有src
个命名空间,但在src/Tech/
中必须是另一个Tech
名称空间。我已经尝试过了,但是总是出错:
Cannot declare class, because the name is already in use
答案 0 :(得分:0)
是的,有可能,尽管我不知道这样做的任何正当理由-这只会使名称空间的结构更加难以理解。
错误Cannot declare class, because the name is already in use
可能是由FQN歧义引起的,例如,如果您有文件:
<?php
namespace App;
use Tech\MyClass;
$myClass = new MyClass();
您有App\MyClass
,然后为MyClass
导入是不明确的-new MyClass()
可能表示new \App\MyClass()
或new \Tech\MyClass()
。在这种情况下,您需要使用别名:
<?php
namespace App;
use Tech\MyClass as TechMyClass;
$myClass = new MyClass();
$myTechClass = new TechMyClass();