bonjour
j'aimerais charger des classes a la volée sans passer par __autoload()
par exemple j'ai un composant pour appeler un web service
chaque appel est géré par une sous-classe
et j'aimerais que la fabrique d'objets de mon composant charge le fichier en fonction du nom de l'appel.
Ca eviterait ainsi de charger toutes les classes d'appels pour 1 seule utilisée
exemple qui marche pas:
Code :
- class WSCall
- {
- public static function create($_callClass, array $_callParams= array())
- {
- $_callClass = __CLASS__.'Call_'.$_callClass;
- if (!class_exists($_callClass) && file_exists(dirname(__FILE__).'/Calls/'.$_callClass.'.php'))
- require_once dirname(__FILE__).'/Calls/'.$_callClass.'.php';
- if (class_exists($_callClass))
- {
- $callObject = new $_callClass($_callParams);
- }
- else
- {
- throw new EezyMarketEbayWSAPIException("La classe <strong>$_callClass</strong> est introuvable" );
- }
- return $callObject;
- }
- }
|
le require_once n'a pas l'air de fonctionner
car le code qui appelle WSCall:create('GetAccount') genere un message d'erreur : "class WSCall_GetAccount not found"
et pourtant le chemin est bon (j'ai verifié en l'éditant avec vi)
alors que si j'utilise ma méthode qui fait des require_once de tous les fichiers, la ca marche.