Page 1 sur 1

Toute ressemblance avec du MVC serait fortuite...

Posté : 01 avr. 2011, 15:25
par albius
Bonjour/ bonsoir,
Précision avant d'exposer ma question : je débute en POO et je n'ai pas encore toucher à MVC (même si j'ai déjà lu des choses à ce propos)
La problématique maintenant:
Suite à l'ajout d'une couche java-script, je me vois dans "l'obligation de réorganiser mes fichiers". Pour être plus précis, je vais tâcher de prendre un exemple:
- J'ai une méthode pour la création d'un nouveau compte utilisateur. L'objet la contenant est créé dans ce même fichier
 class EditComptes {
...
 public function newCompte($newCompte) {
...
}
}
$editComptes = new EditComptes();
- Dans un 2ème fichier, c'est le côté client, avec un formulaire servant à la création de ce compte. Les données transitent par de l'ajax.
- Enfin, un fichier tiers, appelé par java-script, et qui traite les données envoyées par ce dernier:
include_once '../system/connect.php';
include_once '../classes/classEditComptes.php';
//------------------------------------------------------------------------------
if (!empty($_POST)) {
    $editComptes->newCompte($_POST);
}
Est-ce que selon vous, le découpage et le fonctionnement de ces trois fichiers pourraient s'apparenter (je dis bien s'apparenter) à un modèle MVC:
- la classe pour le modèle
- Le formulaire pour la vue
- L'appel de la méthode pour le contrôleur
C'est moi qui me fait complètement un plan ou ça y ressemble ? :D
merci,

Re: Toute ressemblance avec du MVC serait fortuite...

Posté : 04 avr. 2011, 11:08
par albius
Je vous assure que ce n'était pas un poisson d'avril !... Non, sérieusement, qu'en pensez-vous ?

Re: Toute ressemblance avec du MVC serait fortuite...

Posté : 05 avr. 2011, 12:02
par BaLiSTiK
Pour la vue c est ok, apres, l'architecture dépend un peu de la façon dont développe le développeur.
Pour ma part, je fais comme ça :
- Controller : mes classes héritant d'une classe mère AppController, qui dans son constructeur, instancie la couche Model)
- Model : système de connexion à la BD (avec une Interface, le pattern Factory etc...)
- Vue : tout ce qui est affichage

C est vraiment une explication au ras des paquerettes que je fais, en détail, je fais plus compliqué que ça en à l'air :)

Re: Toute ressemblance avec du MVC serait fortuite...

Posté : 05 avr. 2011, 12:34
par albius
J'ai l'impression que là aussi, chacun fait un peu à sa sauce, même si la description et l'application de ce schéma sont déjà plus restrictive...

Re: Toute ressemblance avec du MVC serait fortuite...

Posté : 10 avr. 2011, 04:14
par devlop78
Il y a disons un peu MVC et pseudo MVC. Le principal étant de s'y retrouver :p

Il y des docs là dessus, et il est vrai que l'architecture diffère de certaines docs, surtout dans le "qui parle à qui".

Pour faire simple, on peut voir ça un peu comme :

- La page est appelée, le controleur principal est lancé.
- Il appelle un controleur secondaire en fonction de la page
- Le controleur secondaire met à jour le modèle
- le controleur secondaire appelle la vue
- la vue se construit à partir de données du modèle
- la vue envoie la page au navigateur

Ce schéma est plausible, mais pas forcément applicable. Dans le cadre d'une application, on peut aussi imaginer :

- Le controleur de premier niveau est appelé.
- Le controleur de premier niveau instancie la vue
- Le controleur de premier niveau remplit la vue sur certaines choses (menus par exemple) à partir ou non de données du modèle
- Le controleur de premier niveau instancie un controleur de second niveau (délégation en fonction de la page) en lui passant l'instance de la vue
- le controleur secondaire met à jour le modèle
- le controleur secondaire remplit la vue sur le reste (contenu de la page par exemple) à partir ou non des données du modèle, voire il modifie des données que le controleur de premier niveau a renseigné (rajout d'items de menu par exemple, ou alors, il précise à la vue quel item de menu il doit mettre en avant)
- le controleur de premier niveau lance la vue
- la vue "compile" l'ensemble des données avec le template et envoie au navigateur

C'est actuellement le schéma simplifié d'une application que je réalise. Elle se rapproche plutôt pas mal d'un framework, mais, il ne faut pas se voiler la face, c'est plusieurs dizaines de classes avec chacune sa responsabilité, une hierarchie, une organisation ...

Javascript, quant à lui, aura surement cette forme. Par exemple, pour Ajax, un controleur va communiquer avec un modèle (qui est php). Une fois qu'il obtient des données brutes en xml ou JSON, il les met en forme en XHTML pour les afficher. En gros, ce n'est pas du ressort de PHP de déterminer si JavaScript doit afficher un message d'erreur avec une balise rouge <p> ou avec un message alert() ... Et c'est bien mieux comme ça :D