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 :

utilisation multiple spl_autoload_register


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2012
    Messages : 24
    Points : 10
    Points
    10
    Par défaut utilisation multiple spl_autoload_register
    Salut,

    Je travaille sur l'élaboration d'un framework personnalisé, et j'ai rencontré un problème quand j'ai essayé de dynamiser l'appel de mes classes.

    Voici l'arbo :
    arbo

    Je souhaite donc appeler dynamiquement mes classes à chaque instanciation. J'ai décidé de faire une fonction par dossier :

    Code : 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
    function autoloadLibs($class) {
        //require the general classes
        require 'libs/' . $class . '.php';
    }
     
    function autoloadModels($class) {
        //require the models classes
        require 'models/' . $class . '.php';
    }
     
    function autoloadControllers($class) {
        //require the controllers classes
        require 'controllers/' . $class . '.php';
    }
     
    spl_autoload_register ('autoloadLibs');
    spl_autoload_register ('autoloadControllers');  
    spl_autoload_register ('autoloadModels');
    L'erreur étant la suivante : Warning: require (libs / AdminController.php): failed to open stream
    Le soucis est que ce fichier est dans le dossiers controllers et non libs !

    Comment faut il penser la chose afin que les bon fichiers soient appelés au bon moment ?

    Merci d'avance pour votre aide,
    Adrien

  2. #2
    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 : 48
    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,

    pour ce qui est de l'auto-chargement, il faut te baser sur les normes : PSR-*.
    En gros, tu te sers des espaces des noms que tu transforme en chemin physique.
    Ensuite, si tu as de multiples fonctions de chargement, tu dois savoir qu'elles sont exécutées dans l'ordre dans lequelle elles ont été enregistrées avec spl_register_autoload() et tant qu'une fonction de chargement ne renvoie pas true, le moteur continue à parcourir toutes les autres.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2012
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Après quelques recherches, je suis parvenu à pallier mon soucis avec cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set_include_path(implode(PATH_SEPARATOR, array(get_include_path(), './libs', './controllers', './models')));
    spl_autoload_register();
    Sur stackoverflow, quelqu'un avait mentionner l'utilisation de la norme PSR-*.
    Néanmoins je ne suis pas encore à l'aise avec la gestion des espaces de noms et surtout les étapes à suivre pour mettre en place ce système.

    Merci pour ta réponse

  4. #4
    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 : 48
    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
    Citation Envoyé par sidguia Voir le message
    Néanmoins je ne suis pas encore à l'aise avec la gestion des espaces de noms et surtout les étapes à suivre pour mettre en place ce système.
    C'est dommage de s'en passer surtout dans le cadre d'un développement de framework.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2012
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    je suis le premier à vouloir mettre en place les bonne pratiques dans mes dev'... mais je ne sais pas comment ^^'

    Un tuto serait le bienvenu

  6. #6
    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 : 48
    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,

    y a rien de compliqué, dis toi qu'un espace de nom est un tiroir dans lequel tu vas ranger du code. Tu te dois de nommer judicieusement tes tiroirs (namespace).
    Ensuite pour accéder à ton code, il te faudra tirer le bon tiroir (use).
    Allez un peu de lecture : ici et ici

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2012
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Re !

    je me suis déjà penché sur les namespaces (pour commencer Symfony2). J'aimerai bien aussi implémenter les fichiers de routing yml je trouve ça pas mal !

    je vais essayer d'optimiser mon petit framework !
    je vais (re)lire ce que tu m'a partagé

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

Discussions similaires

  1. Utilisation multiple d'une fonction
    Par crevygood dans le forum Framework .NET
    Réponses: 5
    Dernier message: 23/11/2006, 20h01
  2. Réponses: 4
    Dernier message: 14/07/2006, 02h30
  3. [C#] Comment utiliser multiples définitions ?
    Par nesquik dans le forum C#
    Réponses: 4
    Dernier message: 19/06/2006, 17h36
  4. Réponses: 2
    Dernier message: 27/05/2006, 12h13
  5. [jdbc] nb de connections / pb d'utilisations multiples
    Par pierre.zelb dans le forum JDBC
    Réponses: 8
    Dernier message: 04/08/2005, 16h13

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