Доброе утро всем. Недавно я прочитал статью о шаблоне mvc, в которой говорится, что большинство инфраструктур php внедрили шаблон mvc неправильно. php master mvc pattern part 1 php master mvc pattern part 2 Ну после прочтения этого и рассмотрения этой реализации возник вопрос. Как бы вы назвали в образе метод, вызванный в модели? То, что я пытаюсь сказать, это. Это часть кода из статьи.Модель - Вид - Контроллер новая перспектива
<?php
$model = $_GET['model'];
$view = $_GET['view'];
$controller = $_GET['controller'];
$action = $_GET['action'];
if (!(empty($model) || empty($view) || empty($controller) || empty($action))) {
$m = new $model();
$c = new $controller($m, $action);
$v = new $view($m);
echo $v->output();
}
скажем мы написали небольшую реализацию этого шаблона после прочтения статьи, и мы имеем следующий код:
<?php
class Index extends Controller
{
public function __construct(IndexModel $model, $action)
{
$this->model = $model;
}
public function someAction($id)
{
$this->model->getData($id);
}
}
class Index extends View
{
public function __construct(IndexModel $model, $action)
{
$this->model = $model;
}
public function someAction()
{
$this->model->getData();
}
}
class Index extends Model
{
public function __construct()
{
//Some Code Here
}
public function someAction()
{
// Inserting Data into database.
}
}
Как вы можете видеть, что мы называем тот же метод, как в контроллер и для получения данных из базы данных. Но если я правильно знаю, представление должно позаботиться о работе контроллера, поэтому $ id не будет прав, чтобы снова проанализировать его в представлении или что-то в этом роде. Тогда как это можно решить?
Это ужасная «реализация» MVC тоже и далека от правильной, а также – deceze
, какая часть? код из статьи или часть кода с классами? : D – Bogdan
Я согласен, что это плохая реализация; но технически говоря, в MVC нет ничего, мешающего вам получить доступ к модели через представление. Вы можете проверить MVP (Model-View-Presenter), чтобы гарантировать, что ваш рабочий процесс всегда проходит через Presenter (аналогично Controller in MVC). – bmartins