С постепенным ростом вашего приложения вы замечаете, что оно стало терять в организованности. Ваш **start.php** наполняется смесью //((док3:routing#фильтр+ы))ов//, //((док3:views#составител+и))ей//, ((док3:views#именованные именованных шаблонов)), //((док3:events событий))//, ((9 проверок ввода)), макросов HTML и ((док3:loading автозагрузок классов)). Всё превращается в хаос, усугубряемый тем, что **start.php** по умолчанию уже содержит немного кода. Большинство перечисленного выше можно поместить в **routes.php**, но если у вас мнение на этот счёт совпадает с моим, то вы предпочтёте определять там только //((док3:routing маршруты))//. Итак, как же нам содержать наш код в порядке и чистоте? На самом деле это довольно просто: //нужно разбить логику на несколько файлов//. Лично я создаю папку **start** в папке **application**. Вы можете назвать её, как вам видится лучше. Теперь мы разделим нашу логику и поместим её туда в виде отдельных файлов. В моих проектах **application/start/** содержит следующие файлы: 1. %%(t)autoloading.php%% ([[док3:loading автозагрузка]]) 1. %%(t)basset.php%% (настройка //Basset//) 1. %%(t)composers.php%% ([[док3:views#составители]]) 1. %%(t)filters.php%% ([[док3:routing#фильтры]]) 1. %%(t)validation.php%% ([[9 проверка ввода]]) Вы можете добавить нужные для ваших задач файлы - например, **events.php** ([[док3:events события]]), **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'; %% Вам не хочется перечислять их все вручную? Тогда вы можете использовать класс //((http://php.net/manual/ru/class.directoryiterator.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**. Конечно, вы можете взять продемонстрированный мной подход за основу и расширить его так, как нужно для вашего проекта. Для маленького по масштабам вёб-приложения это может быть вовсе не нужно, а как только оно вырастет это может пригодиться - ведь каждому участку кода будет отведено собственное место.