Различные пространства имен для основной папки и подпапки - PullRequest
0 голосов
/ 10 декабря 2018

Можно ли сделать что-то вроде:

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

Как вы видите, есть App пространство имен для папки src, но в src/Tech/ должно быть другое просто Tech пространство имен.Я пробовал это, но всегда получаю ошибку:

Cannot declare class, because the name is already in use

1 Ответ

0 голосов
/ 28 декабря 2018

Да, это возможно, хотя я не знаю веских причин для такой вещи - это только усложняет понимание структуры пространств имен.

Ошибка 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();
...