主文件夹和子文件夹的不同名称空间

时间:2018-12-10 18:05:11

标签: php namespaces composer-php psr-4 php-namespaces

是否可以执行以下操作:

"psr-4": {
    "App\\": "src/",
    "Tech\\": "src/Tech/"
}

如您所见,App文件夹中有src个命名空间,但在src/Tech/中必须是另一个Tech名称空间。我已经尝试过了,但是总是出错:

Cannot declare class, because the name is already in use

1 个答案:

答案 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();