mustang_shelby
@mustang_shelby
i like (*_metallica_*)

Речь пойдет о MVC?

Доброго времени суток ! как мне понять смысл - когда говорят что модель нечего не должна знать ни он контроллерах не и вьюшках и каждый не должен не оком не чего знать - контроллер как бы проводник - но как мне понять что это значит что они не должны нечего знать друг о друге - быть как то хитро подключены или заинкапсулированы - использованы через неимспэйс - просто я увидел один код и он мне очень не понравился : он был вот таким : в контроллер был подключена модель- что бы использовать ее методы =
include '/models/Category.php';
// this is controller Category 
class Categorycontroller {
    public function get() {
         $set = Category::getCategoryList();
    }
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
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 можете использовать как в контроллере чтения, для показа новостей, так и в контроллере админа, чтобы редактировать новости. Вы же не будете для админа опять писать функции для получения новостей, если класс для работы с новостями уже есть, и выдает то что надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы