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 :

insérer autoload dans architecture mvc [POO]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    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 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut insérer autoload dans architecture mvc
    Bonjour,

    j'ai découvert ici un tuto sur le mvc : https://bpesquet.developpez.com/tuto...hitecture-mvc/. Le code est plus accessible (pour moi) que le code de rawsrc : https://www.developpez.net/forums/blogs/32058-rawsrc/. Par contre, il lui manque le mécanisme d'autoload ce qui nécessite des includes pour toutes les classes. J'essaye de le modifier pour le rajouter, mais erreur...

    L'autoload est bien expliqué dans le blog de rawsrc : https://www.developpez.net/forums/bl.../#comment11831 (Ca, j'arrive à comprendre !)

    Mais ça suffit pas.

    dans index.php de Pesquet (j'ai rajouté les lignes 2 à 6 et commenté la ligne 1) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //require 'Framework/Routeur.php';
    //autoloading
    include_once 'Autoloader.php';
    use Framework\Routeur;
     
    Autoloader::register();
     
    $routeur = new Routeur();

    autoloader.php (fichier placé à la racine) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php 
     
    class Autoloader {
    static function register() {
        define('DIR_ROOT', __DIR__.DIRECTORY_SEPARATOR);
     
        $autoloader = function($full_class_name) {
            // on prépare le terrain : on remplace le séparteur d'espace de nom par le séparateur de répertoires du système
            $name = str_replace('\\', DIRECTORY_SEPARATOR, $full_class_name);
            // on construit le chemin complet du fichier à inclure :a
            // il faut que l'autoloader soit toujours à la racine du site
            $path = DIR_ROOT.$name.'.php';
     
            // on vérifie que le fichier existe et on l'inclut
            // sinon on passe la main à une autre autoloader (return false)
            if (is_file($path)) {
                include $path;
                return true;
            } else {
                return false;
            }
        };
        spl_autoload_register($autoloader);
    }
    }

    et la classe Framework/routeur.php (j'ai rajouté la ligne 2) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    namespace  Framework;
     
    require_once 'Controleur.php';
    //require_once 'Requete.php';
    require_once 'Vue.php';
     
    /**
     * Classe de routage des requêtes entrantes.
     * Inspirée du framework PHP de Nathan Davison
     * (https://github.com/ndavison/Nathan-MVC)
     * 
     * @author Baptiste Pesquet
     */
     
    class Routeur
    ...
    {

    L'arborescence est donnée dans le chapitre VI-A de https://bpesquet.developpez.com/tuto...chitecture-mvc

    et message d'erreur :
    Fatal error: Cannot declare class Requete, because the name is already in use in C:\wamp64\www\mvc_dvp_auth2\Framework\Requete.php on line 10
    La ligne 10 de requete.php est class Requete..

    Comment corriger cette erreur ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    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 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Je précise que le code de l'autoload et des espaces de nom (namespace et use...) est correct car je l'ai déjà fait fonctionner. Mais ici, effet de bord...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut laurentSc

    tu sais si tu t'éparpilles entre les tutos tu vas finir par te noyer.
    Ce qui est à saisir est déjà conséquent alors si tu commences à multiplier les sources, tu ne vas jamais arriver à en faire une synthèse. Bref, tu vas patauger encore et encore.

    Ton message d'erreur, indique juste qu'une implémentation de la classe Requete a déjà été fournie au moteur PHP, de ce fait il est impossible de la redéfinir.
    Tu dois vérifier ton code et partout où tu utilises la classe Requete avec use Framework\Requete;, tu dois utiliser un alias de classe : use Framework\Requete as MaRequete;

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Salut laurentSc

    tu sais si tu t'éparpilles entre les tutos tu vas finir par te noyer.
    J'allais dire la même chose...

    Laurent aime bien mélanger plein de codes différents, façon patchwork.
    D'où son surnom de FrankensteinSc.

    Même quand on écrit (EXPRÈS POUR LUI !!) un tuto, avec cas pratique, il faut encore qu'il aille chercher ailleurs !

    Et après, il s'étonne...
    • ...de ne plus rien comprendre
    • ...que ça ne fonctionne pas
    • ...qu'on se lasse de lui expliquer

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    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 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    C'est justement ayant des difficultés à assimiler le tuto de rawsrc, et en ayant découvert un autre, que je me suis dit "peut-être plus facile". Il a l'air en effet plus simple, mais comme pas assez, je vais limiter mes efforts de compréhension à celui de rawsrc...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2013, 14h06
  2. Frame, MenuBar et Panel dans architecture MVC
    Par maccormick dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/12/2012, 17h31
  3. Réponses: 1
    Dernier message: 28/11/2007, 11h52
  4. Où placer les accesseurs dans une architecture MVC ?
    Par fadeninev dans le forum Zend Framework
    Réponses: 4
    Dernier message: 19/11/2007, 11h41
  5. [Spring MVC] Architecture MVC dans spring
    Par Alec6 dans le forum Spring Web
    Réponses: 4
    Dernier message: 11/10/2006, 12h35

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