大家,早安。最近我读到一篇关于 mvc 模式的文章,说大多数 php 框架都错误地实现了 mvc 模式。 php master mvc 模式第 1 部分 php master mvc 模式第 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 在视图中再次解析它或类似的东西是不正确的。那么如何解决呢?