Bonjour à tous,

J'essaye de faire fonctionner la libraire imagine, tout fonctionne à peu près sauf qu'après avoir inclu le fichier phar, ma fonction autoload n'est plus appelée et php n'arrive donc plus à retrouver mes fichiers class lorsque j'essaye d'instancier une nouvelle classe.

Savez-vous si c'est la librairie qui créer sa propre fonction autoload qui écraserait la mienne et si il y a un moyen de contourner ce problème ?

3 réponses


Il me semble que l'autoload est utile uniquement si tu n'utilises pas la version compressé .phar, mais la version classique d'Imagine.

La version .phar, je crois s'occupe de s'autoloader elle même, il te suffit de l'inclure ou tu veux et d'utiliser les bon namespaces.

As-tu des erreurs ? et si oui lesquelles ?

J'utilise bien la version phar, mais en fait mon problème ne se situe pas au niveau d'Imagine mais de mes classes personnelles qui font partie de mon projet. J'utilise ma propre fonction __autoload() pour inclure mes classes automatiquement et à la volée dès qu'elle sont instanciées, mais cette fonction n'est plus appelée dès que j'inclus la libraire imagine.

Exemple :
$o1 = new MaClasse1; // ma fonction __autolaod est appelée et l'objet o1 créé
include_once 'Imagine.phar';
$imagine = new Imagine\Gd\Imagine(); // OK
$o2 = new MaClasse2; // Erreur, PHP ne trouve pas MaClasse2 car ma fonction __autoload qui inclue mon 'maclasse2.php' n'est pas appelée.

Bon, pour l'instant la seule solution que j'ai trouvée c'est d'appeler les fonctions qui utilisent la librairie imagine en ajax sans les mélanger avec le PHP de mon projet et ça fonctionne.

Si quelqu'un à la solution au problème ça peut m'intéresser tout de même.

Merci à toi !

Et bien, je n'ai pas la solution, mais étant donné le fonctionnement du .phar, je pense qu'il utilise à sa manière une fonction d'__autoload pour fonctionner et écrase donc le fonctionnement de ton propre __autoload.
Peut être qu'en redéfinissant ton __autoload après l'inclusion du phar, il n'y aura plus de problèmes ?