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

Zend PHP Discussion :

Zend et l'autoload


Sujet :

Zend PHP

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut Zend et l'autoload
    Bonjour,

    Je me sers de l'autoload, et je constat que j'ai des erreurs de partout :
    C'est vraiment regrettable, mon code marche parfaitement.

    Comment peut t'on régler le problème ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php 
    class Autoloader{
     
     
    	public static function autoLoad($className, $dir = null){
    		if($dir == null){
    			$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'lib';
    		}
     
    		if($handle = opendir($dir)){
    			while(($file = readdir($handle)) !== false){
     
    				// Les noms des fichiers qui commencent par ".", 
    				// i.e. fichiers cachés, sont ignorés.
    				if(substr($file, 0, 1) == '.'){
    					continue;
    				}
    				if(strcasecmp($file, "{$className}.php") == 0 && is_file("{$dir}/{$file}")){
    					require_once ("{$dir}/{$file}");
    				}
    				else if(is_dir("{$dir}/{$file}")){
    					Autoloader::autoLoad($className, "{$dir}/{$file}");
    				}
    			}
    		}
     
    	}
     
    }
     
    spl_autoload_register("Autoloader::autoLoad");
    ?>
    Tu mets cette classe dans la racine de ton projet, et toutes les autres classes dans le répertoire "lib".

    Et dans ton script appelant, tu inclus une et une seule fois cet Autoloader, il peut chercher récursivement dans le répertoire "lib" et charger la classe demandée, même quand les classes s'appellent entre elles.

    Il faut que t'utilises des classes que dans les scripts appelant et les classes possedent le même nom que le fichier. i.e. tu déclare la classe User dans le fichier User.php

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Alors petite modif pour moi, mes classe se trouve dans :
    Donc je modie ton script :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php 
    class Autoloader{
     
     
    	public static function autoLoad($className, $dir = null){
    		if($dir == null){
    			$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'inc/class';
    		}
     
    		if($handle == opendir($dir)){
    			while(($file = readdir($handle)) !== false){
     
    				// Les noms des fichiers qui commencent par ".", 
    				// i.e. fichiers cachés, sont ignorés.
    				if(substr($file, 0, 1) == '.'){
    					continue;
    				}
    				if(strcasecmp($file, "{$className}.php") == 0 && is_file("{$dir}/{$file}")){
    					require_once ("{$dir}/{$file}");
    				}
    				else if(is_dir("{$dir}/{$file}")){
    					Autoloader::autoLoad($className, "{$dir}/{$file}");
    				}
    			}
    		}
     
    	}
     
    }
     
    spl_autoload_register("Autoloader::autoLoad");
    ?>
    La modification est t'elle correct ?

    Et aussi tu as la variable $handle qui indéfini, peux tu coriger sa ?

    Voila, merci pour tout ce boulot que tu as fourni.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    huh ?! $handle == opendir($dir) est bien définie là.
    C'est peut être une autre $handle?

    Parce que cette fonction marche sur mon pc

  5. #5
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    $handle == opendir($dir)

    Il y a un "=" en trop.

  6. #6
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Avec quelle version de PHP vous l'utiliser ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 77
    Points
    77
    Par défaut
    oui, metagoto a raison, merci.

    J'utilise la dernière version wampserver, c'est du php5.3 je crois

Discussions similaires

  1. require_once(Zend/loader/Autoloader.php)
    Par kepon4life dans le forum Zend Framework
    Réponses: 1
    Dernier message: 21/10/2010, 08h05
  2. Réponses: 8
    Dernier message: 09/11/2006, 08h10
  3. installation zend ( double instance )
    Par ska_root dans le forum Apache
    Réponses: 1
    Dernier message: 02/10/2005, 14h28
  4. [ZEND] _Zend_Hash_init est introuvable
    Par christophebmx dans le forum Zend
    Réponses: 1
    Dernier message: 23/09/2005, 16h06

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