С постепенным ростом вашего приложения вы замечаете, что оно стало терять в организованности. Ваш start.php наполняется смесью фильтров, составителей, именованных шаблонов, событий, проверок ввода, макросов HTML и автозагрузок классов. Всё превращается в хаос, усугубряемый тем, что start.php по умолчанию уже содержит немного кода. Большинство перечисленного выше можно поместить в routes.php, но если у вас мнение на этот счёт совпадает с моим, то вы предпочтёте определять там только маршруты.
Итак, как же нам содержать наш код в порядке и чистоте? На самом деле это довольно просто: нужно разбить логику на несколько файлов.
Лично я создаю папку start в папке application. Вы можете назвать её, как вам видится лучше. Теперь мы разделим нашу логику и поместим её туда в виде отдельных файлов.
В моих проектах application/start/ содержит следующие файлы:
- autoloading.php (автозагрузка)
- basset.php (настройка Basset)
- composers.php (составители)
- filters.php (фильтры)
- validation.php (проверка ввода)
Вы можете добавить нужные для ваших задач файлы — например, events.php (события), macros.php (макросы HTML).
Вот содержимое моего application/start.php:
// подключить автозагрузчик:
require __DIR__ . DS . 'start' . DS . 'autoloading.php';
// подключить фильтры:
require __DIR__ . DS . 'start' . DS . 'filters.php';
// подключить составители и именованные шаблоны:
require __DIR__ . DS . 'start' . DS . 'composers.php';
// подключить правила проверки пользовательского ввода (например, форм):
require __DIR__ . DS . 'start' . DS . 'validation.php';
// подключить маршруты Basset:
require __DIR__ . DS . 'start' . DS . 'basset.php';
Вам не хочется перечислять их все вручную? Тогда вы можете использовать класс DirectoryIterator:
// Файл: application/start.php
// подключить файлы запуска.
$files = new DirectoryIterator(__DIR__ . DS . 'start');
foreach($files as $file) {
if($file->isDot()) continue;
require $file->getPathname();
}
Конкретное решение зависит только от вас.
Заключение
Теперь логика разделена и наш start.php приведён в порядок. Мы точно узнаём, где находится нужный нам код просто взглянув на содержимое папки application/start. Конечно, вы можете взять продемонстрированный мной подход за основу и расширить его так, как нужно для вашего проекта. Для маленького по масштабам вёб-приложения это может быть вовсе не нужно, а как только оно вырастет это может пригодиться — ведь каждому участку кода будет отведено собственное место.