AMFPHP et l'utilisation de classes PHP
Durant mes périgrinations dans l'univers d'AMFPHP, je suis tombé à 2 reprises sur un problème relativement incompréhensible que je vais essayer de détailler un peu ici :
le cadre
Mes classes de remoting sont composées des fichiers suivants :
Root/flashservices/services/MDCLayer.php
Root/classes/MDCLayer/SpecialCases.php
Root/classes/MDCLayer/PearDBLayer.php
Root/classes/MDCLayer/ManagePayments.php
Le fichier MDCLayer est la classe contenant la methodTable. Elle fait appel aux classes PearDBLayer.php et SpecialCases.php.
La classe ManagePayments.php est appelée par la classe SpecialCases.
Le problème
Lorsque je teste un appel vers la méthode de "SpecialCases" qui fait elle même appel à "ManagePayments", via un script PHP, tout fonctionne nickel quoi que je fasse.
Par contre, lorsque je l'appelle via remoting, selon la construction de mon fichier, l'appel échoue lamentablement sur un NetConnection.call.BadVersion...
La solution
La solution réside dans le placement de "l'inclusion" du fichier ManagePayments dans la classe SpecialCases...
J'ai souvent pour habitude de faire les appels aux fichiers utilisés par le script en début de fichier... genre :
include_once "test.php"; include "yop.php"; if (...) ... ... ...
Mais dans le cas d'utilisations de classes, si je met mon appel à ManagePayments.php en début du fichier SpecialCases.php, le remoting ne fonctionne pas... (pourtant via script de test PHP, ça fonctionne...)
Il faut donc mettre la ligne d'inclusion directement dans la fonction qui va initialiser la classe ManagePayments...
Conclusion
Peut-être pas si simple à comprendre ou se situe le bug... enfin, ce n'est peut-être pas réellement un bug, mais il est au premier abord difficilement décelable. En espérant que ça puisse servir
Il me semble que c'est uniquement ce qui est dans la class même qui est pris en compte, d'où ces problemes.