Bonjour,
j'ai un soucis avec l'autoload.
Pour schématiser mon problème, on va dire que j'ai une classe A. Elle étend une classe B. Quand j'instancie un objet depuis A, j'aimerais qu'il se charge automatiquement grâce à l'autoload de la classe B. Donc, dans le constructeur de B, je mets spl_autoload_register(array($this, 'myAutoload'));. Pas de soucis.
En revanche, je dois créer plusieurs objets. C, D, E, tous étendus à B. Donc dans la pile de la spl_autoload, il enregistre toujours la même méthode de l'objet B. Pas de soucis. Sauf que j'ai d'autres arguments à prendre en compte, et SPL conserve ceux de ma première instance. Donc quand je suis à l'objet C, les paramètres pour l'autoload sont ceux de l'objet A.
J'ai pensé à spl_autoload_unregister();, mais ça ne change rien, et il ne fait même rien. Imaginons que je suis dans le cas C éténd B, je dis spl_autoload_unregister(array($this, 'myAutoload'));, le $this correspond à B qui est étendu par B, et par A. Si je pouvais supprimer B étendu par A, ce serait idéal. Ou alors vider la pile complètement.
Une autre solution ?
«
Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »
Hoa :
http://hoa-project.net (sur
@hoaproject).