Я видел это,Как выполнить автозагрузку классов с именем файла, отличным от имени класса?
How to autoload class with a different filename? PHP
Load a class with a different name than the one passed to the autoloader as argument
я могу изменить, но в моем MV * структура у меня есть:
/models
customer.class.php
order.class.php
/controllers
customer.controller.php
order.controller.php
/views
...
В фактически классах они,
class CustomerController {}
class OrderController{}
class CustomerModel{}
class OrderModel{}
Я старался соответствовать именам. Если я не помещаю суффикс имени класса (Controller, Model), я не могу загрузить класс, потому что это обновление.
Если я держу имена моих классов, автозагрузка терпит неудачу, потому что он будет искать файл класса с именем
CustomerController
, когда имя файла действительно,
customer.controller.php
ли мои единственными способами (не в порядке):
- использование create_alias
- переименовать мои файлы (customer.model.php в customermodel.php)
- переименовать мои классы
- использование регулярных выражений
- использовать загрузчик с включёнными файлами (
include
,require_once
и т.д.)
?
Пример кода,
function model_autoloader($class) {
include MODEL_PATH . $class . '.model.php';
}
spl_autoload_register('model_autoloader');
Кажется, я должен переименовать файлы,
http://www.php-fig.org/psr/psr-4/
«Имя класса завершающего соответствует имени файла, заканчивающегося на .php. Имя файла должно совпадают с случаем окончания имени класса ».
Ну да, либо сделать свое именование простым или сделать ваш заряжания достаточно умен, чтобы справиться со своими сложными именами. Вы можете делать все, что вам нужно, в автозагрузчике; если есть шаблон для вашего наименования, который может быть выражен в коде, вы можете реализовать его в своем автозагрузчике. – deceze
Ваш автозагрузчик не должен соответствовать PSR-4. Вы не используете Composer, а настраиваете функцию через 'spl_autoload_register()'. Вы можете рассмотреть возможность проверки с помощью 'file_exists()' в функции автозагрузки. –
@deceze Я надеялся, что есть волшебный PHP-способ сделать это. Я сделал это слишком тяжело. Спасибо за помощь. – johnny