【发布时间】:2011-10-19 13:04:46
【问题描述】:
我对控制器的使用有些困惑。像往常一样,路由器(调度程序或前端控制器)调用控制器类中的一些静态方法,eq PageController::showIndexPage()。我的控制器通常有几行代码,通常是模型加载、获取数据并将其传递给视图。
我的问题是 - 因为每个 http 请求只执行一个方法,我应该避免类并只为控制器创建一个函数吗?有时,我确实每个控制器有几种方法,但每次只使用一种方法。我知道这没什么大不了的,但也许我可以得到更好的系统?这是示例:我的 AuthController 具有 showLoginPage()、doLogin()、doLogout() 之类的方法...因此,最好避免使用类,并将此控制器作为多个函数放在单独的文件中,eq auth/show_login_page。 php、auth/do_login.php 等等?这个概念有一些优点/缺点吗?
更新:因为有些用户夸大了我对静态方法的使用,我必须防御:) 我不创建控制器实例,因为没有必要这样做。在 99% 的情况下,控制器仅用于将数据从模型传递到视图。而且,只需要一个方法调用就不需要创建实例。这就是方法是静态的原因。这是我的一个控制器的示例:
class ArticlesController {
static function showArticle($article_id) {
$article = ArticlesModel::getArticleById($article_id);
View::getInstance()->assignByRef("article", $article);
View::getInstance()->display("articles/one.tpl");
}
static function showAllArticles() {
$articles = ArticlesModel::getAllArticles();
View::getInstance()->assignByRef("articles", $articles);
View::getInstance()->display("articles/all.tpl");
}
}
【问题讨论】:
标签: php model-view-controller controller