Я просто начинаю использовать композитор для управления зависимостями, и мне сложно понять, как я не придерживаюсь psr-4 для автозагрузки, поэтому я здесь за советом. У меня есть класс, который генерирует случайные значения, которые уже находятся в пакете. Структура проекта следующая (я назвал файлы composer.json A и B):
проект dir
|classfile.php A |composer.json |vendor |autoload.php |ejfrancis |php-random-value B |composer.json |RandomValue.php <--the class I want autoloaded
Композитор.json A
{ "require": { "ejfrancis/php-random-value": "dev-master" } }
композитор.json B
{ "name": "ejfrancis/php-random-value", "description": "Secure random value generator.", "require": { "php": ">=5.3.0" }, "license": "MIT", "autoload": { "psr-4": { "ejfrancis\\" : "" } } }
и, наконец, файл RandomValue.php, который объявляет пространство имен ejfrancis
namespace ejfrancis; class RandomValue{ //foo }
Когда я запускаю приложение, я получаю сообщение об ошибке «class RandomValue not found», поэтому он не автозагружается правильно. Я не согласен с psr-4, или есть что-то еще, что я делаю неправильно? Я также пробовал автозагрузку, просто используя класс-класс композитора, такой как "classmap" : ["RandomValue.php"]
без успеха. Спасибо за помощь
Обновление: я запустил 'composer validate' в файле composer.json B, он определенно действителен
Как выглядит код, который создает эту ошибку, которую вы упоминаете? Как я вижу, вы, скорее всего, пропустили использовать правильное пространство имен, все остальное выглядит хорошо.
Im по телефону, чтобы это не было красивым. Бит изменится в вашем композиторе на "Namespace\\"
и сделайте композитор dump-autoload -o