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

Langage PHP Discussion :

Début en MVC


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut Début en MVC
    Bonjour,

    Je suis en train de tester la création d'un site basique en MVC pour bien comprendre le schéma.

    Cependant, je ne sais pas comment créer le router. Vous pourriez m'aider ?

    Voici un ZIP de ce que j'ai commencé : http://www.partage-fichiers.com/upload/k8myn2b5/mvc.zip



    Merci de votre aide

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    As-tu lu ce tuto ?

    Il y a aussi cet exemple de routeur

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Bien qu'étant loin d'être un spécialiste, j'ai vu un problème dans les requêtes de ton modèle, et même un dans le PHP : dans la requête (city.php ligne 8), il y a un $ dans le nom d'une colonne ($formule) et dans le PHP (même fichier, ligne 6), il faut utiliser la concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formule = "(6366*acos(cos(radians(".$latitude."))*cos(radians(`latitude`))*cos(radians(`longitude`) -radians(".$longitude."))+sin(radians(".$latitude."))*sin(radians(`latitude`))))";
    D'autre part, même si j'ai peu de connaissance en MVC, je sais que dans le routeur, il faut créer le controller, qui lui-même va créer la vue et le modèle...

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Bien qu'étant loin d'être un spécialiste, j'ai vu un problème dans les requêtes de ton modèle, et même un dans le PHP : dans la requête (city.php ligne 8), il y a un $ dans le nom d'une colonne ($formule) et dans le PHP (même fichier, ligne 6), il faut utiliser la concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formule = "(6366*acos(cos(radians(".$latitude."))*cos(radians(`latitude`))*cos(radians(`longitude`) -radians(".$longitude."))+sin(radians(".$latitude."))*sin(radians(`latitude`))))";
    Non, le "$formule" est tout à fait normal car c'est la variable qu'il créée juste avant. De plus l'utilisation de guillemets doubles dans une chaine de cractère avec des variables est tout à fait valide et autorisé (voir ceci), même s'il est vrai qu'il est recommandé de privilégier l'utilisation de la concaténation, surtout pour une raison de lisibilité.

    D'autre part, même si j'ai peu de connaissance en MVC, je sais que dans le routeur, il faut créer le controller, qui lui-même va créer la vue et le modèle...
    Ca c'est exact, ton routeur doit rediriger vers un controleur, et non un modèle, et c'est ce contrôleur qui va se charger d'instancier (et non créer) les modèles et les classes nécessaires.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Ca c'est exact, ton routeur doit rediriger vers un controleur, et non un modèle, et c'est ce contrôleur qui va se charger d'instancier (et non créer) les modèles et les classes nécessaires.
    Oui, juste une erreur de vocabulaire et normal, vu que ça fait des mois que je n'ai pas fait de POO. Sinon, dans le code du constructeur du controller (instancié par le routeur), on aura un truc de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /*  la vue doit connaître aussi le modèle */
    $this->model=new model();
    $this->view=new view($this->model);
    et pour ne pas avoir à instancier les classes, dans le routeur (pas de moi, mais d'un expert du MVC) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    spl_autoload_register('my_autoloader'); 
    /* grâce à ça, plus besoin d'include pour les classes : à tt new xyz correspondant à une classe inconnue, cette fonction sera appelée ; si tt fichier de classe est nommé "xyz_class.php", il sera includé si nécessaire */

  6. #6
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Je ne suis pas sur d'avoir tout compris dans vos échanges.
    J'ai tout de même essayé de le faire.

    http://paf.im/TjYaS

    Cependant, je ne sais pas comment utiliser un template (dossier views/layout)

    Si vous pouvez m'aider.

    Merci

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    1) Kaspersky refuse d'ouvrir ton lien ;

    2) Même si je suis persuadé que le MVC est ce qu'il y a de mieux (pour coder tout seul, donc sans Framework, Zend, Symphony and co), ça fait des mois que je n'y ai pas touché (pas eu le temps !) ;

    3) Si ça peut t'aider, j'ai mis en PJ le zip d'une formation (passionnante) que j'avais suivie (fin 2012) sur le sujet (le contenu du zip est le code du projet MVC résultat de la formation)
    Fichiers attachés Fichiers attachés

  8. #8
    Membre régulier Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Points : 92
    Points
    92
    Par défaut
    Merci pour ton fichier.

    Je vous remets tout de même mon zip avec mes fichiers classés en mvc (enfin, j'ai essayé, vous me direz).
    J'en suis à cette étape - Je ne comprend pas comment appliquer le template générale (views/layout).

    mvc_v2.zip

    Merci

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Quelques remarques d'un non-spécialiste :

    - je suis presque sûr qu'il faut créer des classes controller, model et view, ce qui n'est pas le cas chez toi ;

    - dans ton routeur, tu includes controllers/accueil.php; or ce fichier n'existe pas.

  10. #10
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut
    Quelques remarques :

    D'après ton index.php, tu sembles ne pas faire la distinction entre un contrôleur et une page. Index.php (appelé contrôleur frontal) reçoit en paramètres le contrôleur et l'action du contrôleur, pas le nom d'une page. C'est ensuite l'action du contrôleur qui va inclure une vue.

    Parce que ton fichier news.php pour l'instant il ne fait qu'afficher les news, mais il va falloir qu'il puisse en ajouter, en modifier une, etc... Donc dans news.php il te faut plusieurs actions.

    Exemple : tu appelles index.php?controleur=News&action=View. Index.php va alors inclure le fichier controllers/news.php, qui contiendra au minimum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    include(dirname(__FILE__).'/../models/news.php');
     
    class NewsController
    {
        public function ViewAction()
        {
            $news = recuperer_news();
            include(dirname(__FILE__).'/../views/news.php');
        }
    }
    Et index.php, après avoir inclus ce fichier, va instancier le contrôleur et appeler la méthode View (syntaxe à vérifier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $controleur = $_GET['controleur'] . 'Controller';
    $controller = new $controleur();
    $action = $_GET['action'] . 'Action';
    $controller->$action();
    Pour le template général, à ton stade je dirais que tu pourrais commencer par faire simplement dans ta vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?require 'layout/entete.php';?>
    <h1>Les news du site</h1>
     
    <?php
    foreach($news as $n) {
     
    	echo '<div class="news">Article : '.$n['titre'].' by '.$n['auteur'].'</p></div>';
     
    }
    require 'layout/pied.php';
    ?>
    Mais pour pouvoir utiliser un seul fichier comme gabarit tu as besoin de cette technique :
    http://bpesquet.developpez.com/tutor...e-mvc/#LII-C-1

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Début en OpenGL
    Par cyber_N dans le forum OpenGL
    Réponses: 3
    Dernier message: 30/06/2004, 08h12
  3. [MVC] Différences entre les framework MVC push et pull ?
    Par XavierZERO dans le forum Frameworks Web
    Réponses: 5
    Dernier message: 15/01/2004, 13h12
  4. Classe abstraite / MVC
    Par caramel dans le forum MVC
    Réponses: 5
    Dernier message: 01/04/2003, 09h27
  5. Toutes les bonnes choses ont un début ...
    Par Bols2000 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/08/2002, 17h01

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