Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2189 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  __autoload()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

__autoload()

n°1485761
Da KJ
Posté le 03-12-2006 à 21:13:56  profilanswer
 

Bonsoir,
 
J'aimerais mettre en oeuvre la fonction __autoload() que je viens de découvrir (je débute en PHP objet) pour charger mes classes, mais je me confronte à un petit problème. Voilà comment j'ai procédé.
 
J'ai mis ma fonction __autoload() dans un fichier "autoloading.php" que j'inclus dans toutes mes autres pages de la manière suivante
 

Code :
  1. require_once('autoloading.php');


 
l'ennui c'est que lorsque ma fonction __autoload() s'execute, le chemin pour chercher les classes peut varier (car les fichiers qui l'appellent ne se trouvent pas forcément dans le même répertoire), j'ai donc procédé comme ceci
 
code de mon autoloading.php
 

Code :
  1. <?php
  2. function __autoload($class_name)
  3. {
  4. if(require_once('class/'.$class_name.'.php'))
  5. {
  6. }
  7. else
  8.  require_once('../class/'.$class_name.'.php');
  9. }
  10. ?>


 
Et ça marche, par contre je ne sais pas si c'est très propre. Qu'en pensez-vous ? Il y aurait-t-il une meilleure syntaxe (ou façon de faire) ?

mood
Publicité
Posté le 03-12-2006 à 21:13:56  profilanswer
 

n°1485890
FlorentG
Posté le 04-12-2006 à 10:17:30  profilanswer
 

Quelle version de PHP ?

n°1486035
Da KJ
Posté le 04-12-2006 à 13:23:15  profilanswer
 

ben php5...

n°1486097
FlorentG
Posté le 04-12-2006 à 15:04:03  profilanswer
 

Nan mais oui, mais PHP5 ? 5.1 ? 5.2 ?

n°1486241
Da KJ
Posté le 04-12-2006 à 17:24:50  profilanswer
 

5.0.4 pourquoi ?


Message édité par Da KJ le 04-12-2006 à 17:25:20
n°1486242
FlorentG
Posté le 04-12-2006 à 17:26:17  profilanswer
 

Parce que avec spl_autoload_register, on peut utiliser une fonction autoload pouvant faire partie d'une classe par exemple, ce qui permet d'y foutre de la config tout bien :)

n°1486297
Da KJ
Posté le 04-12-2006 à 18:37:16  profilanswer
 

FlorentG a écrit :

Parce que avec spl_autoload_register, on peut utiliser une fonction autoload pouvant faire partie d'une classe par exemple, ce qui permet d'y foutre de la config tout bien :)


 
euh tu pourrais un peu développer s'il te plaît ? j'ai pas capté :/

n°1486313
FlorentG
Posté le 04-12-2006 à 19:20:48  profilanswer
 

Genre avec un exemple vite-fait :

Code :
  1. class TehAutoload
  2. {
  3.   const $path = '/home/pouet/www/class/';
  4.   public static function autoload($className)
  5.   {
  6.      require self::$path . $className . '.php';
  7.   }
  8. }
  9. spl_autoload_register(array('TehAutoload', 'autoload'));


Plus propre et pratique :)


Message édité par FlorentG le 04-12-2006 à 19:21:15
n°1486371
Da KJ
Posté le 04-12-2006 à 21:55:21  profilanswer
 

ok merci j'ai vais essayer de mettre en oeuvre !

n°1486472
gizmo
Posté le 05-12-2006 à 09:44:01  profilanswer
 

Tiens, question con: y a-t-il moyen d'enregistrer plusieur loader avec cette fonction ou bien c'est juste du sucre pour eviter de taper les 3 lignes de code qui font la meme chose?

mood
Publicité
Posté le 05-12-2006 à 09:44:01  profilanswer
 

n°1486476
FlorentG
Posté le 05-12-2006 à 09:50:07  profilanswer
 

On peut en enregistrer autant qu'on veut

n°1486499
gizmo
Posté le 05-12-2006 à 10:26:33  profilanswer
 

Ok, cool, et l'ordre d'utilisation c'est une pile ou une file?

n°1486501
FlorentG
Posté le 05-12-2006 à 10:30:30  profilanswer
 

C'est une file, ils sont appellés dans l'ordre où ils ont été enregistrés

n°1486549
gizmo
Posté le 05-12-2006 à 11:39:13  profilanswer
 

Parfait. J'entrevois peut-etre enfin la solution pour me faire un systeme de namespace. :bounce:

n°1486551
FlorentG
Posté le 05-12-2006 à 11:41:05  profilanswer
 

Héhé :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  __autoload()

 

Sujets relatifs
Plus de sujets relatifs à : __autoload()


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)