Bonjour,
je viens vous voir car je démarre la réalisation d'un site php , et cette fois-ci j'ai envie de passer à du PHP objet.
J'ai décidé d'utiliser l'organisation MVC pour bien séparer mes couches, par contre je ne souhaites pas utiliser de framework déjà tout fait.
Je viens donc ici pour vous exposer la manière avec laquelle je compte procéder, afin d'avoir vos remarques et vos corrections/optimisations si nécessaire.
Donc prenons l'exemple de mon site il y aura une table MEMBRE, une table petite annonces par exemple.
Voici l'arborescence que je comptais utiliser:
- index.php
- /models/GenericDBStorer.php
- /models/MembreDBStorer.php
- /models/AnnonceDBStorer.php
- /views/GenericView.php
- /views/MembreView.php
- /views/AnnonceView.php
- /controllers/GenericTask.php
- /controllers/MembreTask.php
- /controllers/AnnonceTask.php
Donc voila sur ce petit exemple. Pour ce qui est de la partie des models pas de PB, j'ai ma classe principale GenericDBStorer.php qui implémente les principales fonctions ( readAll() , save () , read(id) , load() ) et tous mes autres models héritent de celle là.
par contre là ou ça se corse, c'est au niveau des vues je n'arrive pas à trouver un intérêt à les utiliser dans le MVC car je n'arrive pas à trouver forcément un gain de temps, car chaque vue sera différente?( donc rien à factoriser ? )
Habituellement dans mes sites je fais qque chose dans ce genre (index.php ):
Dans l'url je passe par exemple : index.php?page=membre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <div id="contenu"> <?php if exists($page.".php") { include($page.".php"); } ?> </div>
et donc j'inclus membre.php et c'est membre.php qui affiche la liste des membres.
Ou bien je passe index.php?p=membreDetail&id=3
j'affiche ainsi les infos du membre 3. (inclusion de membreDetail.php)
Ou alors index.php?p=editerMembre
Là l'utilisateur (loggé sur sa SESSION) arrive sur la page editerMembre.php avec $_SESSION["id_mb"] comme paramètre pour récupérer ces valeurs...
Donc est ce que c'est à ce niveau là que mon controller va devoir agir ?
Si je fais passer index.php?p=membre&action=voir
est ce que je devrais faire qque chose du genre:
et donc dans MembreTask.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <div id="contenu"> <?php //Charge le controller demandé GenericTask::loadController($page."Task"); MembreTask->voir($page); ?> </div>
En fait je ne comprend pas trop l'interaction avec la vue, je ne sais pas trop quelles fonctions y mettre à l'intérieur , et qu'elle intérêt de faire hériter toutes mes vues d'une vue générique si je ne peux rien factoriser.. ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class MembreTask.php extends GenericTask { public $page; GenericDBStorer::load($this->page); MembreDBStorer->readAll(); MembreView->voir() ????? }
Voila j'attends vos conseils et avis
Et merci à tous ceux qui vont prendre le temps de lire mon message .
bye
Partager