おはようございます。最近、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 はビューまたはそのようなもので再度解析するのに適切ではありません。では、これはどのように解決できますか?