查看和控制器1:1的关系。在Controller中实例化视图?更好的方法?

时间:2013-04-01 08:31:17

标签: php model-view-controller

我目前正在创建View并将其注入请求的Controller然后我

$this->view->load('sometemplate');

然后在我的startup.php文件的末尾我做

$view->render();

我现在正在将我的应用程序更改为每View Controller,但我能想到的唯一方法就是在View中实例化Controller每个Controller都有一个唯一的View个实例。

修改

如果我有Controllers\Products,我希望它有Views\Products。最简单的方法是在Views\Products内实例化Controllers\Products,因为当我在Controller时,我会确切地知道我需要View但我不喜欢在View中实例化Controller的想法。

我更希望在Views\Products之外创建Controllers\Products并将其注入。

我的Router::route($uri)会返回包含这些属性的Route

private $directory;
private $controller; // Just controller name, not an instance
private $method;
private $params = array();

我在想,如果我的ViewsControllers具有相同的名称,我可以使用$controller中的Route属性来实例化正确的View然后将其注入正确的Controller。这会是一个好方法吗?

解决此问题的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:-1)

如果您正在谈论MVC,那么我会说您必须在控制器类中执行操作。 根据惯例,您的视图类应与您的操作具有相同的名称。