Пространства имен автозагрузчика композитора psr-0

Я создал собственный пакет композитора, но у меня возникли проблемы с установкой для него правильных параметров автозагрузки.

Все мои классы находятся в пространстве имен MyNamespace/Common. Так, например, для включения моего класса ArrayHelper я использую Mynamespace/Common/Helper/ArrayHelper.

Это соответствующая часть моего composer.json:

"autoload": {
    "psr-0": { "MyNamespace\\": "" }
} 

Я прочитал это: composer.json/autoload

Любая помощь?


person brpaz    schedule 09.08.2013    source источник


Ответы (1)


Вы должны перемещаться по местоположению файла вашего пространства имен.

"autoload": {
    "psr-0": { "MyNameSpace": "./<path to your parent directory>" }
}

Например, это моя структура каталогов:

composer.json
source
  \-Data
    |-Controller
    \-Repository

Затем в файле composer.json:

"autoload": {
    "psr-0": { "MyNameSpace": "source/Data" }
}

Затем я могу определить классы в этих пространствах имен:

/* namespace for classes in controller directory */
namespace MyNameSpace\Controller;

/* namespace for classes in repository directory */
namespace MyNameSpace\Repository;
person KarelG    schedule 09.08.2013
comment
Структура моего пакета была похожа на компоненты symfony2, поэтому мне пришлось настроить целевой каталог следующим образом: getcomposer.org/doc/04-schema.md#target-dir - person brpaz; 09.08.2013
comment
разделитель определений пространства имен должен использовать \ не / - person thenetimp; 30.08.2014