A. Analyse
Effectuez une analyse (personnelle) de votre projet:
- déduisez un diagramme de cas d'utilisation avec toutes les
actions possibles. Posez les acteurs (les contrôleurs se
déduisent implicitement) et les actions que l'on va
retrouver dans vos contrôleurs (rappel: le fait de ne pas
avoir d'action, ($_REQUEST['action']=Null) correspond aussi
à une action qui généralement mène à une vue par défaut,
souvent la première)
- répertoriez toutes les Vues nécessaires au projet (Vue
d'erreur incluse !),
- définissez un diagramme de classes où l'on doit trouver
les contrôleurs, les modèles, etc.
B. Reprise de l'architecture MVC vue
en cours pour votre projet.
Reprenez le code de l'exemple de MVC vu en cours, essayez le
(oui, il est aussi téléchargeagle sur ce site :-).
Il y a 3 exemples :
- mvc_autoloadsimple : MVC vu en cours au plus simple.
L'ajout des répertoires ou se trouvent vos classes se fait
dans le fichier Autoload.php.
- mcv_PSR4 : MVC avec namespace utilisant l'autoloader PSR4
fourni par le gestionnaire de dépendances Composer. Pour
modifier les répertoires, il faut ouvrir le fichier composer.json.
Puis lancez la commande php composer dump-autoload (ou
php composer.phar).
- mcv_PSR4_twig : même chose que précédemment mais les vues
ne sont plus faites en HTML/PHP mais en HTML/TWIG. Voir TP
suivant.
Si vous rencontrez une erreur indiquant
que le répertoire cache ne peut être crée, allez dans
index.php et modifiez la ligne 'cache' =>
'cache', par 'cache' =>
false,
Nous supposerons dans un premier temps que vous avez 2 acteurs
(mais peut être en avez-vous plus?).
- Dans votre structure d'application (arborescence), ajoutez
les vues que vous avez faites dans les précédents TP.
- Commencez par coder un nouveau contrôleur CtrlUser :
faites le constructeur (squelette du contrôleur) avec toutes
les actions que vous avez trouvées dans votre analyse. Pour
chaque action, vous devez définir une méthode associée dans
la classe (laissez ces méthodes vides pour l'instant). Par
exemple, supposons que vous vouliez "afficher la page
d'accueil" quand vous appelez votre site sans action (action
"ne rien faire" = NULL), vous allez compléter le code du
constructeur, puis ajouter une méthode "accueil()" appelée
lorsque REQUEST['action]=NULL, etc.
- Prenez une action (ex: "afficher la page d'accueil",
"insérer une news" ou "insérer une tâche", ...), complétez
le code de votre contrôleur pour cette action, faites une
classe modèle qui appèle une Classe Gateway, et faites au
moins une vue. Dans le cas ou votre site récupère des
donnéees via un formulaire, n'oubliez pas de valider ces
données avec une Classe Validation.
- Faites de même pour les autres actions, puis vos autres
contrôleurs (CtrlAdmin au moins).
Ne faites pas encore la partie de code sur la
connection d'un administrateur par exemple. Ce sera vu et
travaillé par la suite.