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