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 de spl_autoload_register


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut Utilisation de spl_autoload_register
    Bonjour,

    Je ne parviens pas à utiliser la fonction spl_autoload_register (ou alors je l'utilise mal?? ).

    Je veux auto-charger des classes depuis des répertoires différents j'ai donc utilisé des fonctions d'auto-chargements mais seule la première de la pile est prise en compte.

    Voici le code que j'utilise pour les tests :

    autocharge.php
    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
    19
    20
     
    <?php
     
    function charge_classes_DAO($classNameDAO) {
    	require_once "DAO/".$classNameDAO.".php";
    }
    function charge_classes_Metier($class_name) {
    	require_once "Metier/".$class_name.".php";
    }
     
    spl_autoload_register('charge_classes_Metier');
    spl_autoload_register('charge_classes_DAO');
     
    $myobject = new dao(); 
    echo $myobject->afficherdao();
     
    $myobject2 = new metier(); 
    echo $myobject2->affichermetier();
     
    ?>
    DAO/dao.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    class dao {
    	function afficherdao() {
    		echo "dao";
    	}
    }
     
    ?>
    Metier/metier.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    class metier {
    	function affichermetier() {
    		echo "Metier";
    	}
    }
    ?>
    et voici le joli message que je recois :
    Warning: require_once(Metier/dao.php) [function.require-once]: failed to open stream: No such file or directory in /home/user/www/test/autoCharge.php on line 7

    Fatal error: require_once() [function.require]: Failed opening required 'Metier/dao.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/user/www/test/autoCharge.php on line 7
    Quelqu'un sait il comment faire pour déclarer les deux répertoires (Metier et DAO) dans les chemins de l'autoload??

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    faudrait peut être vérifier que le fichier existe avant de l'inclure ?
    Sinon, tu risques d'inclure un fichier qui n'existe pas, et de provoquer une erreur. Surtout qd tu fais un require_once.

    Autrement, c'est bien l'usage, simplifié, d'un auto_loader.

    a plus

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    pffff j'ai oublié les !!!

    Je débute avec le spl et je regardais juste le comportement de spl_autoload_register en me disant que je ferai mes tests plus tard...

    En effet, il faisait son include sur le premier autoload de la pile et, hop, erreur quand le fichier n'existait pas.

    Merci kaymak.

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

Discussions similaires

  1. utilisation multiple spl_autoload_register
    Par sidguia dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2012, 14h10
  2. [PHP 5.3] Problème avec l'utilisation de spl_autoload_register
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2012, 12h38
  3. [PHP 5.3] Utilisation de spl_autoload_register
    Par éric1 dans le forum Langage
    Réponses: 6
    Dernier message: 08/08/2009, 10h15
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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