Можно ли сделать что-то вроде:
"psr-4": {
"App\\": "src/",
"Tech\\": "src/Tech/"}
Как вы видите, есть App
пространство имен для src
папка, но в src/Tech/
должен быть еще один Tech
Пространство имен. Я пробовал это, но всегда получаю ошибку:
Cannot declare class, because the name is already in use
Да, это возможно, хотя я не знаю веских причин для такой вещи — это только усложняет понимание структуры пространств имен.
Ошибка 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();
Других решений пока нет …