我有一个FrontController类,这个类里面有路由功能。
执行以下操作的Run()方法:
public function run() {
$method = new \ReflectionMethod($this->controller, $this->action);
$numParams = $method->getNumberOfParameters();
//fill missing parameters with null values
if (count($this->params) != $numParams) {
$tempArray = array_fill(0, $numParams, null);
$this->setParams($this->params + $tempArray);
}
$controller = new $this->controller;
$userInstance = User::getInstance();
//just creates a model based on the controller name by default its
//Index.php (model)
$model = DB::createModel($this->getControllerName());
//run _before before any function
$controller->_before($model, $userInstance);
call_user_func_array(array($controller, $this->action), $this->params);
return;
}
现在我已经看过教程,他们使用BaseController
,然后每个Controller 扩展来自 basecontroller 。我的控制器不会从FrontController扩展。
我的问题是我需要一个单独的路由类吗?我需要将FrontController拆分为
因为run()函数实际上将模型和用户对象传递给控制器。
答案 0 :(得分:2)
要记住的一个基本原则是Single Responsibility Principle。精心设计的课程只有一个责任。
所以是。您需要将路由和所有其他职责分开。
另请注意,模型必须被视为图层而不是类或对象。模型层是类(数据访问,服务)的集合。实际上,您的User
类应该被视为该层的一部分。
Here's an article which can help you understand the MVC pattern a bit better.