Александр Яшин

RU | EN

Введение в Pina2 Framework

В поиске быстрого, гибкого и удобного фреймфорка я недавно погрузился в Laravel. Знакомство начал с 5й версии. Мне понравился SQL Builder, middleware, работа через composer. Не понравились массивные таблицы роутинга, тяжеловестность, потребление памяти. Не понравился Blade. Не понравились советы, в которых рекомендуют включать кэшировать таблицы роутинга, если они разрастаются. Беглое изучение других фреймворков показало, что там всё еще хуже и сложнее.

Я хочу, чтобы код лился из под пальцев рекой. Чтобы все было просто и быстро. Чтобы было мало абстракций, но они были мощными и понятными.

Поэтому я решил написать свой велосипед, который бы в плане интерфейса основных классов был бы схож с Laravel (для простоты понимания другими людьми), но решал проблемы именно так, как этого хочу я.

Что я хочу от приложения на любимом фреймворке:

  1. Код разделен на модули. Весь код сгруппирован в одной папке, включая контроллеры, шаблоны, классы модели и т.д. Никаких тебе: в одной структуре папок - контроллеры, в другой - шаблоны, и бегай по дереву каталогов туда-сюда. Всё, что относится к одной функциональности, к одному модулю, лежит вместе.
  2. Никаких таблиц роутинга. Должно быть простое и понятное правило, по которому URL, сформированные по принципам REST преобразуются в адрес обрабатывающего его PHP-файла.
  3. В качестве шаблонизатора - smarty, но чтобы было простое наследование шаблонов.
  4. Никаких классов для контроллеров. Контроллер - это обычный PHP-файл, который просто обрабатывает входные данные и прокидывает результаты в представление.
  5. Через шаблонизатор должна быть возможность подключить любой контроллер, который в обычном состоянии вызывается при HTTP-запросе.
  6. Темы оформления. Шаблоны для темы оформления лежат отдельно и перегружают (уточняют) типовые шаблоны.
  7. Многосайтовость. Можно запустить несколько сайтов на одной инсталляции, для отдельных сайтов можно перегрузить типовые шаблоны и шаблоны темы оформления.

Ну и, конечно, как везде:

  1. Работа через namespace и composer.
  2. SQL Builder
  3. Middleware (в терминах Laravel)
  4. Unit tests

Все это сейчас есть в состоянии бета-версии и внедряется в нескольких проектах. В серии статей я подробно расскажу, как с этим работать.

Комментарии ().

Rambler\'s Top100