J'ai un dilemme concernant l'utilisation du contrôleur. Comme d'habitude, le routeur (répartiteur ou contrôleur frontal) appelle une méthode statique dans la classe du contrôleur, par exemple PageController: : showIndexPage() . Mes contrôleurs ont habituellement plusieurs lignes de code et c'est habituellement le chargement du modèle, la récupération des données et le passage à la vue.
Ma question est la suivante : étant donné qu'une seule méthode est exécutée par requête http, dois-je éviter les classes et créer une seule fonction pour le contrôleur ? Parfois, j'ai vraiment plusieurs méthodes par contrôleur, mais à chaque fois, une seule méthode est utilisée. Je sais que ce n'est pas un gros problème, mais peut-être que je peux obtenir un meilleur système ? Voici un exemple : Mon AuthController a des méthodes comme showLoginPage(), doLogin(), doLogout()... Donc, peut-être que c'est une meilleure idée d'éviter la classe, et d'écrire ce contrôleur comme plusieurs fonctions dans des fichiers séparés, eq auth/show_login_page.php, auth/do_login.php, et ainsi de suite ? Ce concept a-t-il des avantages et des inconvénients ?
Mise à jour : Parce que certains utilisateurs bloquent mon utilisation de la méthode statique, je dois me défendre :) Je ne crée pas d'instance de contrôleur, car il n'y a pas besoin de cela. Dans 99% des cas, le contrôleur est seulement utilisé pour passer les données du modèle à la vue. Et, il n'y a pas besoin de créer une instance pour un seul appel de méthode, c'est la raison pour laquelle la méthode est statique. Voici un exemple d'un de mes contrôleurs :
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");
}
}