Паттерн MVC

Моя интерпретация широко известного паттерна.

Это классический подход для построения веб-приложений, который находит применение практически везде

Он говорит от том, что есть 3 основных компонента:

  • Model - данные
  • View - предстваление
  • Controller - бизнес логика

Read more

Kohana: AJAX контроллер с ловлей ошибок

Продолжая тему написания custom контроллеров не для html вывода предлагаю мой вариант обработчика AJAX-запросов. Напомню, в предыдущий раз я описывал контроллер для консольного демона

Помимо удобной для меня выдаче данных(я предпочитаю в 99% случаев выдвать JSON) есть ещё ряд фитч:

  • Код контроллера многократно используется наследниками класса, которые при необходимости могут перегрузить необходимые методы. В них написать простой ответ клиенту с помощью не сложных функций можно в пару строк - не нужно отвлекаться на создание json ответа, а писать логику.
  • Дефолтные ответы об успешном выполнении запроса, предупреждения или ошибки
  • Ловятся ошибки фреймворка и формируется адекватный отчёт об ошибке, а не километровый HTML от Kohana - просто идеально при использовании fireBug или аналогичных средств отладки.
  • Если вызываемый метод не реализован в наследнике, то будет выдан user-friendly ответ(опять же если использовать регламент возвращаемых структур json)

Read more

Kohana: Контроллер для CLI

Kohana - в первую очередь фреймворк, т.е. каркас приложений, и не обязательно для Web. Результатом работы Веб приложения может быть не только гипертекст(HTML) но и JSON, XML, изображения, простой текст, так и вовсе ничего.

Понятно, что в зависимости от размера проекта и назначения проекта иногда приходиться писать демоны, которые занимаются рассылкой почты, бэкапами бд, различными пересчётами, транскодингом и много чем ещё...

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

Для написания консольного приложения(впрочем как и "демона") на основе Kohana нужно немного "допилить" контроллер. По-прежнему всю логику будет выполнять именно он, за одним исключением - если приложение и будет что то выводить - то это сообщения для отладки.

Важным моментом в этом является отлавливание ошибок. Стандартный отлов ошибок и исключений будет работать по-прежнему, но при малейшем E_NOTICE у вас в консоль отобразиться как минимум строк сто HTML кода - страница ошибки. Рано или поздно надоест прокручивать вверх и разбираться в коде - почему бы не представить ошибку в более понятном и читаемом виде?

Read more