Я пытаюсь использовать свое собственное пространство имен для своих личных занятий.
Структура каталогов (как обычно):
мой проект/ - срк / | - myComponent.class.php \ - myWrapper.class.php - продавец | - ДругоеБиблиотека \ - Symfony - composer.json - index.php
в моем composer.json Я определяю свое собственное пространство имен с помощью:
"autoload": {
"psr-0": {
"my_namespace\\": "src/"}
}`
тогда в моем коде PHP у меня есть что-то вроде:
namespace my_namespace;
class myComponent
{
.... code
}
namespace my_namespace;
require_once __DIR__.'/vendor/autoload.php';
$component = new myComponent();
Неустранимая ошибка: класс ‘my_namespace \ myComponent’ не найден в /path_to_root/my_project/index.php в строке 5
Я бы ожидал MyComponent искать в my_project / SRC /, как указано в composer.json и как определено в продавец / композитор / autoload_namespaces.php ('my_namespace\\' => array($baseDir . '/src')
).
Я бы ожидал, чтобы позвонить прямо на мой заказ MyComponent, когда я определяю пространство имен для своего собственного пространства имен. Я ошибся?
Что не так в моем коде и моих предположениях?
Как мне это исправить?
Вы сами нашли ошибки, но вот краткий сборник того, что делают полезные директивы автозагрузки в Composer:
composer.json
файл. Класс myNamespace\myClass
а также "psr-0":{"myNamespace\\": "src"}
попробую загрузить src/myNamespace/myClass.php
,composer.json
из полного имени класса, а остаток преобразуется в путь, в конце добавляется «.php» и производится поиск по заданному пути. Класс myNamespace\myClass
а также "psr-4":{"myNamespace\\": "src"}
попробую загрузить src/myClass.php
,Других решений пока нет …