2009-06-23 13 views
3

Ich verwende ZendAMF für Remoting.Mapping PHP und Flex Objekte

<?php 
    error_reporting(E_ALL | E_STRICT); //error reporting, not needed 

    require_once "Zend/Amf/Server.php"; //the zendAMF server 
    require_once "process.php"; //our test class 

    $server = new Zend_Amf_Server(); //declare the server 

    $server->setClass("process"); //load our test-class to the server 
    $server->setClassMap("Session", "Session"); 
    echo($server->handle()); // needed to start the server 
?> 

Meine Frage ist, ich habe eine ActionScript-Klassensitzung und eine PHP-Klassensitzung, aber es wird immer noch nicht zugeordnet. Ich habe einige Zweifel ... kann albern sein ...

Sollte der Dateiname der PHP-Klasse der gleiche Name des Klassennamens sein, wie es nicht notwendig ist, aber während der Zuordnung trägt es einen Wertestand.

Wie werden Sie diese zugeordneten Objekte in Ihrer Flex-Anwendung aufrufen? Mein Ansatz ist unten angegeben, aber nicht sicher, ob es korrekt ist oder nicht.

$ server-> setClassMap ("Sitzung", "Sitzung"); Welches ist eine PHP- und Flex-Klasse in der obigen Funktion.

Auch meine PHP-Session-Klasse ist innerhalb des include-Verzeichnisses, sollte ich das irgendwo angeben oder die ZendAMf wird sich darum kümmern.

Flex-Code.

var userSession:Session = new Session(); 
sessionHold.text = userSession.userid; 

Danke.

+0

Ich habe mit AMFPHP bei meinem Dayjob gespielt und nicht mit dem Zend AMF Tool gespielt. Haben sie im Zend-Tool etwas wie den "Service Browser", der mit AMFPHP verfügbar ist? Das war meine beste Wette in Bezug auf die Fehlersuche. Ich habe nur die PHP-Seite gearbeitet, nicht die Flash-Seite. – artlung

+1

@artlung der Service-Browser in AMFPHP ist eine eigenständige Flash-App, die das OP in der Lage sein sollte, einfach aus dem AMFPHP-Download zu greifen und als Debugging-Tool zu verwenden. – dcousineau

+0

Charles Proxy hat sich für diese Art von Arbeit als unbezahlbar erwiesen. Wenn es für nichts anderes ist, ist es eine große Vernunftprüfung. –

Antwort

4

Es gibt ein paar verschiedene Dinge, die Sie tun müssen. Normalerweise ist es so etwas wie das Hinzufügen der

[Remote (alias = „Session“)]

auf die Metadaten Ihrer AS-Klasse oder über einen Link Zend_Amf Funktionen wie getASClassName() in der PHP-Objekt. Schaut euch Wade Arnolds (Schreiber von Zend_Amf) Screencast zu re: class mapping an. Ich bin sicher, er wird deine Antwort haben.

http://www.wadearnold.com/tutorials/zend/classmap/

0

TypeOneError korrekt ist; Du wirst

[RemoteClass(alias="Session")] 
[Bindable] 

oben in deinen ActionScript-Klassen benötigen.

ein paar andere Dinge, die ich festgestellt haben, kann dieses Problem verursachen:

  • Klassenvariablen öffentlich sein müssen und identische Namen haben
  • Die Actionscript-Klasse sollte nicht eine definierte Konstruktor
+0

Oh Schatz. Habe das nie zum Laufen gebracht, auch wenn ich Metatags zu meinen Wertobjekten hinzugefügt habe. Ich habe mit Carles gecheckt, dass php streng typisiertes Wertobjekt an flex schickt, aber Mapping funktioniert nicht. –