gpt4 book ai didi

PHP - 类中的静态方法或只是一个函数

转载 作者:可可西里 更新时间:2023-11-01 01:07:54 25 4
gpt4 key购买 nike

我对 Controller 的使用有些困惑。像往常一样,路由器(调度程序或前端 Controller )调用 Controller 类中的一些静态方法,eq PageController::showIndexPage()。我的 Controller 通常有几行代码,通常是模型加载、获取数据并将其传递给 View 。

我的问题是——因为每个 http 请求只执行一个方法,我应该避免使用类而只为 Controller 创建一个函数吗?有时,我确实每个 Controller 有多个方法,但每次只使用一个方法。我知道这没什么大不了的,但也许我可以获得更好的系统?这是示例:我的 AuthController 具有 showLoginPage()、doLogin()、doLogout() 等方法... php、auth/do_login.php 等等?这个概念有什么优点/缺点吗?

更新:因为一些用户夸大了我对静态方法的使用,我必须防御 :) 我不创建 Controller 实例,因为没有必要。在 99% 的情况下, Controller 仅用于将数据从模型传递到 View 。而且,不需要为一个方法调用创建实例。这就是方法是静态的原因。这是我的一个 Controller 的示例:

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");
}
}

最佳答案

静态类函数非常像全局函数,所以不知道为什么要为 Controller 使用静态类函数(这很尴尬),所以要么将它们更改为标准对象方法,要么将它们完全更改为全局函数。

我建议您将整个应用程序分为一个分支,用全局函数替换所有 Controller ,另一个分支用非静态类函数。然后您可以更好地比较这两个概念。

如果您不想四处游玩并且需要指点,请将所有静态类函数转换为非静态函数,然后继续,直到遇到下一个问题。

关于PHP - 类中的静态方法或只是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com