IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC Discussion :

Comment apprendre très simplement le MVC appliqué à PHP ?


Sujet :

MVC

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Comment apprendre très simplement le MVC appliqué à PHP ?
    Bonjour,
    Je suis actuellement en première année de BTS Informatique, où j'ai appris à utiliser le PHP, puis le PHP objet depuis quelques mois.
    Mes connaissances ne sont pas très poussées, mais si on me demande une application PHP, je suis capable de la réaliser dans son intégralité, mais non sans partir dans tous les sens avec un code quelque peu brouillon.
    Je possède des connaissances assez simples et théoriques en objet (notion de classe, d'instance, d'interface, d'héritage, d'implémentation...), que je suis capable d'utiliser dans de petits scripts simples.

    Je suis actuellement intéressé par la méthode MVC, que j'aimerais découvrir et comprendre de façon simple (avec le PHP).
    Malheureusement, mon niveau n'est pas suffisant pour comprendre les tutoriels que je trouve un peu partout sur internet (je parle de mon niveau en PHP, mais surtout en objet). Notamment, j'ai essayé de suivre un tutoriel de Julien Pauli (http://julien-pauli.developpez.com/t...vc-controleur/), où je me suis vite retrouvé perdu.

    Connaissez-vous un article ou un site qui expliquerait simplement la base de l'utilisation du MVC en PHP ? Ou pensez-vous que l'aborder avec mon niveau actuel est impossible ? Si cela est le cas, que me conseillez-vous pour progresser vers une écriture de code un peu plus "pro" ?

    En vous remerciant d'avance pour vos réponse

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Juste pour les notions, le MVC n'est pas une méthode mais un pattern une architecture de ton code.

    Ensuite le principe si tu n'as pas tout saisie pour faire simple c'est de ne voir AUCUN bout de html ou de css mélangé avec des fonctions de ton site ou application web.

    Donc dans le principe tu commences par faire tes classes avec tes fonctions. AjoutTruc(), modifTruc(). Ensuite tu fais ta vue et tu fais un contrôleur une classe qui fait le lien entre le modèle(tes fonctions) et ta vue (html).

    C'est long et pas facile à faire, beaucoup de développeur commence et au bout d'un moment sa mélange le tout ^_^°.

    En revanche pour faire plus "pro" , déjà faire un css et pas mettre le design dans le html (visuel brut) , c'est déjà une avancé pas mal. Deuxièment, séparé les fonctions SQL, si tu as une base, des fonctions de ton modèle ( réutilisabilité, des fonctions).

    Commenter son code sans en faire trop, indenter son code, en fait respecter les normes de codage, disponible sur W3c et tu feras "pro" ^_^°.

    Pour finir organisation des fichiers sur le disque, les dossiers sa ne coûte rien donc mettre les images dans un dossier images, la partie admin dans un dossier admin la partie cliente dans un dossier client etc.. .

    Petite remarque : si tu veux faire vraiment pro, tu fais une analyse et une documentation de ton site (dialogue entre les pages, ergonomie) . Un site ou une application web c'est comme un logiciel si tu veux qu'il soit bien propre et pro il faut une analyse, si tu as vu le film facebook, il n'a pas fait sa page blanche avec des com en 2 jours, il l'a pensé et analyser avant de faire le développement.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Oui pardon c'est vrai, MVC est un modèle, pas une méthode x)
    Merci pour ces conseils, on m'a toujours habitué à faire des feuilles de styles indépendantes, et l'IDE NetBeans indente pour moi, mais pour le reste je vais prendre note.
    Je commence à comprendre un peu le fonctionnement, et j'ai trouvé un tutoriel assez bien foutu, je le donne au cas où ça pourrait aider quelqu'un :
    Méthodologie de développement MVC d'une application PHP

    Par contre, j'ai un peu de mal à faire correctement la distinction entre le modèle et le contrôleur, pourrais-tu m'éclairer ?

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bien sûr, le modèle c'est le cœur de ton application, c'est la base de ton application.

    Illustrons : quelqu'un veut faire un thermomètre virtuel. Avant de penser graphisme ou autre tu te dis un thermomètre c'est quoi :

    une Température : int temp;
    un message : int temp;
    Fonction IncrementTemp(){temp = temp + 1}
    Fonction decrementTemp(){temp = temp - 1}
    Fonction SignalTempGlacial(){if temp <= 0 message = glagla}
    Fonction SignalTempChaud(){if temp >= 0 message = afiouuu}
    Fonction SignalTempNormal(){if temp >= 0 message = normal}

    ce sera ton modèle ( bien sûr que pour quelqu'un d'autre tu auras peut être un autre modèle par exemple plus de signalement). Ensuite tu peux imaginer un appel toutes les heures sur monter ou descendre le thermomètre.

    c'est la que le contrôleur intervient :
    il fait le lien entre la vue et le modèle, c'est le contrôleur qui va appeler les fonctions du modèle et les transmettre à la vue. Le truc du PHP c'est que pour mettre à jour une vue, il faut tout refresh c'est pour cela que l'AJAX est à la mode il permet de mettre à jours qu'une partie de la vue.

    En tout cas c'est ma vision des choses ^_^°.

    Pour en revenir à notre histoire de "pro", tu remarques qu'il faut faire le modèle en premier, le but est de bien cerné le "Besoin client" notion importante car tu apprendras qu'un client c'est une espèce complexe ^_^°, par exemple il vient un jour et te dit en fait mon thermomètre je le veut pas +1 en +1 mais +2 en +2 ainsi tu sais que la fonction incrémentale et dans le modèle. Une fois que tu as tout le besoin client tu peux te faire plaisir sur le graphisme. L'avantage aussi du MVC ce que si un jour un autre client vient et te demande un truc qui s'incrémente de 1 en 1 tu as peut être cette fonction dans un modèle existant, alors que si tu mélanges css html php ajax etc.. et ben pour réutiliser c'est mort alors tu réécris. Bon une fonction incrémente sa ira mais tu vois l'idée sur un truc beaucoup plus gros.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Merci pour ce merveilleux exemple, je comprends beaucoup mieux x)
    En fait ils sont assez proches, et la limite de l'un est dure à discerner du début de l'autre. Je dis ça parce qu'en reprenant ton exemple, puisque l'appel de la fonction d'incrémentation n'a lieu que dans certains cas bien particulier (la température monte), il pourrait (l'appel) être assuré par un fonction du modèle, qui elle serait appelée par le contrôleur (cette fonction pourrait par exemple déterminer si la température monte ou descend, et de combien, et faire appel à la bonne fonction avec les bons paramètres)...
    C'est un cas simple, mais dans un programme plus complexe je pense que la limite est bien plus difficile à déterminer.
    Mais bon, grâce à toi j'ai bien compris la différence.

    Je me pose une autre question... Si j'ai bien compris il y a une vue par page de résultat, et chaque vue est en fait un bout de HTML (contenant des variables PHP pour qu'il soit dynamique).
    Mais comment sont "déclenchées" les vues ? Le contrôleur demande au modèle toutes les infos dont il a besoin pour afficher la vue, puis il include la bonne vue ? C'est comme ça que cela fonctionne ?

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Pour reprendre la première partie, tu as raison, il est possible de faire une fonction gestionTemp(choix,ValPourIncret) et appeler la bonne fonction, c'est à toi de trouver une conception de modèle qui te plaît, n'oublie pas si on te dit qu'il n'y a qu'une seule solution c'est faux. Il existe toujours plusieurs bonne solution après plus ou moins améliorer, c'est ce qui fait la différence entre un concepteur à 5000€ et un à 2000€ ^_^°.

    Le contrôleur demande au modèle toutes les infos dont il a besoin pour afficher la vue
    C'est tout à fait sa.

    puis il include la bonne vue ? C'est comme ça que cela fonctionne ?
    C'est la que que sa tu as différentes version, tu peux utilisé l'ajax ou faire des includes dans la vue,ou juste afficher en dynamique des variables php, mais quelque soit ton choix le contrôleur en faisant un refresh (tu peux passer les nouvelles valeur avec get ou post ou faire juste un refresh), va afficher les nouvelles valeurs de la vue.

    Si tu as mieux compris le mvc, pour conclure le mvc n'est pas magique et il existe d'autre modèle plus simple ou beaucoup plus complexe ( seehim, arche, 6couches ....) mais d'avoir une démarche d'architecture c'est déjà bien .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Mmh... désolé d'insister mais je ne saisi pas vraiment quand tu dis :

    C'est la que que sa tu as différentes version, tu peux utilisé l'ajax ou faire des includes dans la vue,ou juste afficher en dynamique des variables php, mais quelque soit ton choix le contrôleur en faisant un refresh (tu peux passer les nouvelles valeur avec get ou post ou faire juste un refresh), va afficher les nouvelles valeurs de la vue.
    (surtout que je ne connais pas l'ajax...)


    Apparemment, si l'on respecte le découpage en trois parties (M-V-C), on peut agencer les choses un petit peu comme on le sent...

    Personnellement, je verrai bien un programme fonctionnant de la façon suivante (arrête moi si cela ne suit pas le modèle imposé) :

    --> L'utilisateur clique sur un bouton ou un formulaire, qui s'adresse au contrôleur et qui transmet par la méthode 'get', l'action que l'on souhaite effectuer (exemple : http://[URL]?action='incrementer').

    --> Nous sommes d'accord que chaque action (bouton ou formulaire) doit donner lieu à la création d'une vue bien particulière. Le contrôleur pourrait donc include un script qui porterait le nom de l'action que l'on souhaiterait voir accomplir (Include 'action_' . $_GET['action'] . '.php';).

    --> Le script ("action_incrementer.php") serait appelé et aurait pour tâche l’exécution de toutes les actions dont on aurait besoin pour construire la vue (requêtes SQL d'insertion ou d'update, calcul mathématique, traitement d'informations...). Il se servirait pour cela des fonctions du modèle (ici, il effectuerait la connexion à la base, il updaterait la température (+1), et il récupèrerait la nouvelle température).

    --> A la fin de l'exécution du script include, le contrôleur includerait la vue portant le même nom que l'action (Include 'vue_' . $_GET['action'] . '.php';).

    --> Cette vue ("vue_incrementer.php") contiendrait l'entêtes HTML avec le lien vers la page de CSS, le menu, l'affichage de la page, et surtout, la nouvelle température récupérée par notre contrôleur !

    Voilà, c'est ce que j'ai compris, maintenant dis moi si c'est juste ou si je me plante complètement ! =D

  8. #8
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Apparemment, si l'on respecte le découpage en trois parties (M-V-C), on peut agencer les choses un petit peu comme on le sent...
    Je reste un peu flou pour cela, le MVC c'est un concept, donc il n'y a pas de règle particulière, à part ce que je pense tu as compris maintenant modèle séparer de la vue et les deux communiquent entre eux avec le contrôleur.

    L'utilisateur clique sur un bouton ou un formulaire, qui s'adresse au contrôleur et qui transmet par la méthode 'get' Par post aussi pour cacher l'action.
    Nous sommes d'accord que chaque action (bouton ou formulaire) doit donner lieu à la création d'une vue bien particulière. Le contrôleur pourrait donc include un script qui porterait le nom de l'action que l'on souhaiterait voir accomplir [COLOR="Red"](Include 'action_' . $_GET['action'] . '.php'

    Le script ("action_incrementer.php") serait appelé et aurait pour tâche l’exécution de toutes les actions dont on aurait besoin pour construire la vue (requêtes SQL d'insertion ou d'update, calcul mathématique, traitement d'informations...). Il se servirait pour cela des fonctions du modèle (ici, il effectuerait la connexion à la base, il updaterait la température (+1), et il récupèrerait la nouvelle température).

    A la fin de l'exécution du script include, le contrôleur includerait la vue portant le même nom que l'action (Include 'vue_' . $_GET['action'] . '.php'.

    --> Cette vue ("vue_incrementer.php") contiendrait l'entêtes HTML avec le lien vers la page de CSS, le menu, l'affichage de la page, et surtout, la nouvelle température récupérée par notre contrôleur !

    Je suis en attente de la connexion à la beta de guild wars 2 donc j'ai survolé , mais sur le principe , pour ma part tu as compris.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Super merci ! je suis assez content x)
    Oui c'est vrai qu'on peut faire un formulaire post avec comme attribut 'action' l'url avec les paramètres... mais bon, j'ai voulu faire simple x)

    Bon ben du coup je clos le sujet, merci de ton aide vraiment précieuse !
    Si jamais tu repasses et qu'une erreur te vient, y'a toujours les mp !

    PS : Abandonne pas LoL pour GW2 ! Hérétique !
    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2015, 13h46
  2. Comment apprendre Scriptol ?
    Par Anonn dans le forum Autres langages pour le Web
    Réponses: 3
    Dernier message: 10/03/2006, 18h02
  3. Réponses: 5
    Dernier message: 09/01/2006, 11h46
  4. Comment passer des argument a un script php ?
    Par Florina dans le forum Linux
    Réponses: 2
    Dernier message: 11/12/2005, 14h38
  5. [wxPython] Comment apprendre wxPython ?
    Par bibile dans le forum wxPython
    Réponses: 6
    Dernier message: 02/08/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo