Это вопрос, на который, к сожалению, нет 1 правильного ответа. Многое зависит от того, как вы предпочитаете реализовывать шаблон MVC.
В своей основе MVC использует: Модели, Представления и Контроллеры.
Модели Эти классы должны представлять сущности в вашей базе данных
Пример:
Model_User сопоставляется с сущностью в вашей таблице Users.
$user = new Model_User;
$user->first_name = 'Joe';
$user->last_name = 'Smith';
$user->save();
Представления В этих файлах хранятся данные/шаблоны презентаций (обычно/в основном HTML)
Пример:
index.tpl
<h1>HELLO, WORLD!</h1>
<h2><?=$some_variable_from_controller?></h2>
Контроллеры Эти файлы обрабатывают входящие запросы и обрабатывают данные для внедрения в представления.
Пример:
Controller_Home обрабатывает запрос на домашнюю страницу
class Controller_Home extends Controller {
public function action_index(){
$view = View::factory('index');
$view->render();
}
}
Теперь, когда вы узнали основы, пришло время понять конкретную проблему, которую продвигает эта ограниченная структура. Контроллеры становятся жирными и грязными. Это приводит нас к библиотекам или сервисно-ориентированной архитектуре.
Эти библиотеки позволяют нам перемещать большие группы логики на переносимый сервисный уровень, который можно легко использовать во всех контроллерах, моделях и других библиотеках. Они также разбивают наш код на более мелкие и краткие фрагменты, которые действительно имеют смысл.
Пример:
В моем контроллере вместо того, чтобы использовать кучу логики, которая регистрирует пользователя через facebook, я могу просто создать Social_Login_Service и использовать его следующим образом.
Social_Login_Service::facebook($user_email);
Теперь вы просто увидите одну чистую строку в вашем контроллере входа в систему вместо целой мешанины логики, которая будет накапливаться в вашем контроллере до тех пор, пока она не расплавит ваш мозг.
Это очень общий обзор возможного направления (и того, которое я предпочитаю).
Очень полезно разбивать сайты на более мелкие компоненты, и если вы используете Kohana, я рекомендую делать это с модулями (http://kohanaframework.org/3.1/guide/kohana/modules), они великолепны.
Я надеюсь, что этот небольшой фрагмент помог.
person
Eric Uldall
schedule
27.01.2015