Как заставить Composer (PSR-4) работать с расширением ".class.php"?
Я столкнулся с большой проблемой с ошибкой "Class Not Found". Но недавно я узнал оригинальную проблему. Мои предыдущие два вопроса относительно проблемы:-
Композитор выдает ошибку "класс не найден"
PHP Composer PSR-4, автозагрузка и подпространства имен, класс не найден
Я заинтересован в работе с классами, имеющими расширение class.php
например, parent.class.php
а также child.class.php
, Но композитор, похоже, не распознает эти файлы, и отображается сообщение об ошибке "Класс не найден". Проблема решается, если я использую простое расширение.php (child.php
а также parent.php
).
Мне было интересно, можно ли заставить композитора работать с .class.php
расширение для моих файлов класса php?
1 ответ
Если вы хотите, чтобы ваш код был PSR-4-совместимым, тогда вы ДОЛЖНЫ иметь имена файлов в формате classname.php
,
Из спецификации PSR-4:
Имя завершающего класса соответствует имени файла, оканчивающемуся на.php. Имя файла ДОЛЖНО совпадать с регистром имени завершающего класса.
( http://www.php-fig.org/psr/psr-4/)
Так что, если вы придерживаетесь PSR-4, то ответ заключается в том, что вы не можете использовать свой .class.php
имена файлов. Просто измените имена файлов, и проблема будет решена.
Если по какой-то причине вам абсолютно необходимо сохранить существующие имена файлов, вам нужно будет обойти их, написав собственную функцию автозагрузчика или просто вручную включив их старомодным способом. (Но помните, что вы не будете соответствовать PSR-4, если сделаете это)