Привет, дорогой читатель!
И вот он снова я. А снова я расскажу тебе о том как быстро и просто сделать динамический роутинг для фреймворка Kohana 3! Немного пошаманив и написав каких-нибудь пару десятков строк кода мы впихнем весь роутинг коханы в базу MySQL, а при желании и в любую другую! Для чего? Ну хотя бы для того чтобы постоянно не дергать bootstrap.php для добавления путей! А если у нас еще и CMS или что-то в этом роде, модульное, сделанное на базе Kohana 3, то динамически изменяемый роутинг нам сильно пригодиться!

Содержание
- Что мы будем делать?
- Для чего это нужно?
- Еще один SQL коннект при загрузке каждой страницы, дополнительная нагрузка на сайт...
- А сможем ли мы использовать ту же гибкость как и в файлах?
- Идеально ли такое решение для использования?
- Схема таблице в базе данных
- Добавляем первый роут в базу данных MySQL
- Добавляем код-обработчик роутинга загружаемого из базы данных MySQL
- Итог
Что мы будем делать?
В этой статье мы научим Kohana 3 framework считывать данные о роутинге из базы данных. В нашем случае это будет MySQL, но не думаю что портировать на другие СуБД представит хоть какую-то сложность.
Для чего это нужно?
Если у Вас сайт предполагает наличие динамически подключаемых модулей или быстрой перезаписи роутинга на лету, не меняя содержимого файлов, то работа с базой данных необходима.
Еще один SQL коннект при загрузке каждой страницы, дополнительная нагрузка на сайт...
При правильном подходе нет. У нас не будет частого обращения к MySQL с нашего сайта. Мы не будем делать выборки при запросе пользователем каждой страницы. Вместо этого мы сделаем выборку всех значений роутинга и закешируем на нужное нам достаточно большое время, к примеру 60 секунд или больше. За эти 60 секунд к базе мы обратимся единожды. На все время жизни кеша данные будут получаться из кеша, что может быть нам еще выгоднее, к примеру если кеш храниться в памяти, а не на жестком диске. Производительность только увеличиться. Более того мы закешируем весь роутинг. Не менее важно то что мы в нашем случае сможем использовать как базу данных , так и файловое содержимое роутинга в файле bootstrap.php, например для критически важных моментов сайта, чтобы при отключении базы мы могли ссылаться на страницу, к примеру "Сайт находиться на техническом обслуживании."
А сможем ли мы использовать ту же гибкость как и в файлах?
Легко. Мы просто сделаем подстановку значений из базы в стандартный для нас синтаксис. Сможем так же использовать регулярные выражения. Более того, используя базу данных мы указываем хранить уникальные значения для имени роутинга и самого регулярного выражения роутинга, таким образом ограждая себя от ошибки из-за невнимательности - добавление роутов с одинаковыми именами или же одинаковыми регулярными выражениями, указывающими на одинаковый путь обработки.
Идеально ли такое решение для использования?
Нет идеальных решений. Это только технический пример, как использовать Kohana 3 framework и при этом брать данные о роутинге из базы данных MySQL. Наверняка есть что улучшать.