class NewsModel {//модель
public function getNews()
{
$news=;//подключаемся к бд, получаем новости, и т.д.
//при этом модель понятия не имеет, что там творится с контроллером и view - модель просто отдаёт из БД новости
return $news;
}
}
class View {
public function render($data)
{
include "view.phtml";//здесь в файле- данные расставляются в теги, крутятся в foreach и т.д. На входе - только данные из контроллера. Сам view ничего делать не умеет, кроме как отображать данные
}
}
class NewsController { //контроллер
public function action_getNews()
{
$news=new NewsModel();
$view=new View();
$view->render($news->getNews());
/*контроллер понятия не имеет, как модель получила новости. Контроллер всего лишь получил запрос экшена - action_getNews, взял из модели данные, и отдал в view. Контроллер - контролировал эти действия, но не изменял ни БД, ничего другого*/
}
}
1)В дальнейшем вы можете менять модель, способ подключения к БД, модернизировать функционал.
2) Менять view как хотите - данные на вход поступают из контроллера, и контроллер трогать не нужно.
3) При изменении контроллера вы меняете логику приложения, увеличивая его функционал.
мне очень не понравился : он был вот таким : в контроллер был подключена модель- что бы использовать ее методы
Это позволяет применять DRY - Don't Repeat Yourself. Вы в процедурном программировании так же функции делаете, а потом их используете. Чем тогда хуже подключить отдельный класс (модель), и использовать его в любом контроллере?
Вы модель News можете использовать как в контроллере чтения, для показа новостей, так и в контроллере админа, чтобы редактировать новости. Вы же не будете для админа опять писать функции для получения новостей, если класс для работы с новостями уже есть, и выдает то что надо.