J'essaie de suivre les bonnes pratiques autant que possible pendant que j'apprends en utilisant OOP dans une structure MVC, donc je me tourne vers vous les gars pour un peu de conseil sur quelque chose qui est me dérange un peu ici. Je suis en train d'écrire un site où j'aurai un certain nombre de formulaires à remplir par les membres (principalement des données sur eux-mêmes), j'ai donc décidé de mettre en place un contrôleur Membre où tous les formulaires relatifs au membre sont représentés comme des méthodes individuelles. Cela inclut les méthodes de connexion/déconnexion, ainsi que l'édition des données de profil, etc. En plus de ces méthodes, j'ai aussi une méthode pour générer le widget du panneau de contrôle du membre, qui est une constante sur chaque page du site. La seule chose à faire est que toutes les autres méthodes de ce contrôleur ont toutes les mêmes dépendances et modèles de formulaires, donc ce serait génial de générer tout cela dans le constructeur, mais comme la méthode control_panel n'a pas les mêmes dépendances, etc. Je ne peux pas utiliser le constructeur à cette fin, et je dois à la place redéclarer les dépendances et les mêmes extraits de modèles dans chaque méthode. Ceci n'est évidemment pas idéal et ne suit pas le principe DRY, mais je me demande ce que je devrais faire avec la méthode control_panel, car elle est liée au membre et c'est pourquoi je l'ai mise dans ce contrôleur en premier lieu. Suis-je trop compliquer les choses ici et est-ce qu'il est logique de simplement déplacer la méthode control_panel dans une simple classe d'aide?OOP + conseil MVC sur le contrôleur de membre
Voici les méthodes de base du contrôleur:
class Member_Controller extends Website_Controller {
public function __construct()
{
parent::__construct();
if (request::is_ajax())
{
$this->auto_render = FALSE; // disable auto render
}
}
public static function control_panel()
{
//load control panel view
$panel = new View('user/control_panel');
return $panel;
}
public function login()
{
}
public function register()
{
}
public function profile()
{
}
public function household()
{
}
public function edit_profile()
{
}
public function logout()
{
}
}