Neulich habe ich wieder etwas mit Flash "herumgespielt" und bin auf das Problem gestoßen von Flash aus mit PHP zu kommunizieren. Wobei mit kommunizieren - Objekte zwischen Flash und PHP hin- und herzuschicken und Methoden der PHP Klasse aufzurufen - gemeint ist.
Leider bietet Flash standardmäßig nicht die komfortablen Funktionen um mit PHP kommunizieren zu können. Nur Java, Microsoft .NET und Coldfusion MX werden durch eine kostenpflichtige Erweiterung Namens Flash Remoting unterstützt. Damit kann Flash mit Hilfe einiger ActionScript Dateien und einem Gateway auf der Serverseite Objekte und Klassen auf dem Server ansprechen und innerhalb des Flashfilmes wie eigene Objekte benutzen. Das schließt auch die Nutzung der Objekteigenen Funktionen oder Methoden mit ein.
Eigentlich keine schlechte Lösung, aber leider nicht für PHP geeignet! Also muß etwas anderes her. Über Google bin ich dann auch gleich auf einige interessante Open-Source Projekte gestoßen, die versuchen die gleiche Funktionalität auch für Flash bereitzustellen.
AMFPHP - Die Open-Source Alternative
Am bekanntesten dürft hier das AMFPHP Projekt sein. Es bietet Funktionen wie automatische Datentypen Konvertierung und Serialisierung der Objekte. AMFPHP basiert, wie der Name schon andeutet, auf der gleichen Technik wie Flash Remoting, indem es die Daten in einem binären Format transportiert. Das Action Message Format AMF benötigt weniger Bandweite, als wenn die Daten über XML transportiert werden würden. Da Macromedia das Format nicht offen dokumentiert hat, mußte es erst umständlich "gehackt" werden. Allerdings befindet sich AMFPHP noch in einer frühen Entwicklungsphase und sollte besser nicht in Produktionsumgebungen eingesetzt werden. Aber ein Blick darauf sollte nicht schaden. Einige Beispiele werden gleich mitgeliefert und sollten den Einstieg nicht all zu schwer machen.
PHPObject - der andere Ansatz
Ein weiteres Open-Source Project ist PHPOject. PHPObject funktioniert ähnlich wie AMFPHP basiert allerdings nicht auf dem AMF Format sondern transportiert die Daten in einem Textformat und nutzt dabei die konventionellen Client-Server Kommandos von Flash womit es die Daten serialisiert und deserialisiert. Außerdem bietet es ein WebServicesConnectivityAddOn das die Kommunikation mit WebServices aus Flash heraus sehr vereinfacht.
PHPObject liegt bereits in der Version 1.4.1 vor und macht einen sehr guten Eindruck!
Weitere Alternativen
Neben den oben genannten Lösungen existieren noch weitere Projekte, die sich mehr oder weniger für die selbe Aufgabe eignen. Der Cabron Connector macht einen ausgereiften Eindruck und basiert auf der selben Idee wie PHPOject. Interessant ist auch der mitgelieferte Debugger.
Und schließlich ist da noch der NKConnect PHP Connector welcher die Kommunikation über WDDX (Web distributed data eXchange) einem XML Format ablaufen läßt.
Ihr seht, es gibt einige Alternativen zu Flash Remoting von Macromedia. Es ist also nicht notwendig darauf zu warten das Macromedia sich entlich bequemt und auch PHP unterstüzt. Im nächsten Teil meiner Serie zu Flash Remoting für PHP werde ich mich näher mit PHPObject beschäftigen und anhand eines einfachen Beispiels zeigen, wie einfach sich Flash und PHP verbinden lassen.