Некоторое время назад я создал расширение ветки. Недавно я добавил пространство имен, чтобы легче использовать его с композитором. Я сделал это несколько раз, и он отлично работает с другими файлами/классами.Композитор PSR4 странное поведение
Проблема в том, что он только автозагружается правильно, если я использую опцию -o (оптимизировать) при обновлении или dumpautoload в композиторе.
Так, например, если я запустил composer dumpautoload -o
, мой класс найден без проблем. Если я бегу composer dumpautoload
он не будет работать, и дать мне следующую ошибку:
Fatal error: Class 'Crecket\custom_twig_extension' not found in C:\Dropbox\Ampps\www\crecket.dev\index.php on line 24
Мой расширение класса:
namespace Crecket;
class custom_twig_extension extends \Twig_Extension{
// The code
}
Мой композитор файл
"autoload": {
"psr-4": {
"Crecket\\": "src/"
}
}
структура папок
src/custom_twig_extension.php
Кто-нибудь знает, что вызывает это? Я не могу понять, что вызывает это. Я предполагаю, что это связано с тем, что композитор создает карту классов, когда я использую оптимизацию.
Он отлично работает для меня с вашей настройкой. Проверьте пару вещей. Убедитесь, что вам требуется 'vendor/autoload.php' из' index.php'. Также проверяйте 'vendor/composer/autoload_classmap.php' и' vendor/composer/autoload_psr4.php' после каждой команды и посмотрите, дает ли это вам какие-либо идеи. –
@JustinHoward класс отображается в файле psr4.php, но я проверил его в файле index.php, используя 'get_declared_classes()', и он там не указан. Я серьезно не знаю. Я даже попытался добавить/удалить лишние пространства имен и сменить папки – Crecket
У меня есть то же самое ... все еще не выяснено, почему и как его исправить – Seb