Zurück   Flashforum > Flash und Server > Flash Remoting

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-01-2007, 20:13   #1 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
[AMFPHP] Returns aus Serviceklasse

Rein aus Interesse habe ich die Rückgabedatentypen eins Servicecalls in Actionscript testen wollen, und musste mit Erschrecken festsstellen das die Remotingklassen mehr oder minder nicht zu gebrauchen sind, glaub ich ...

Folgendes Szenario

file: Test.php
PHP-Code:
<?php class Test
{

    
    function 
Test ()
    {
        include(
AMFPHP_BASE "util/MethodTable.php");
        
$this->methodTable MethodTable::create(__FILE__);
    }
    
    
    
/**
     * @desc A string test
     * @access remote
     * @returns string
     */
    
function stringTest ()
    {
        
$str 'Hello world';
        return 
$str;
    }
    
    
/**
     * @desc A array test
     * @access remote
     * @returns array
     */
    
function arrayTest ()
    {
        
$a = array ('hello''world');
        return 
$a;
    }
    
    
/**
     * @desc A object test
     * @access remote
     * @returns object
     */
    
function objectTest ()
    {
        include (
'Object.php');
        
$obj = new Object ();
        return 
$obj;
        
    }
    
}
?>
file: Object.php
PHP-Code:
<?php class Object
{
    
    var 
$message;
    
    function 
Object ()
    {
        
$this->message 'hello world';
    }
    
}
?>
file: AMFPHPTest.as
PHP-Code:

import mx
.remoting.*;
import mx.rpc.*;
import mx.utils.Delegate;

class 
AMFPHPTest
{
    
    private var 
endpoint String
    
private var serviceclass String
    
private var connection Connection
    
private var service Service
    
private var responder RelayResponder
    
    
public function AMFPHPTest ()
    {
        
endpoint "http://webservice/amfphp/gateway.php"
        
serviceclass "Test"
        
connection = new Connection ()
        
responder = new RelayResponder (this'onResult''onFault')
        
service = new Service (nullnullserviceclassconnectionresponder)
        
run ()
    }
    
    private function 
run ()
    {
        
connection.connect endpoint )
        
//
        
service.stringTest ()
        
service.arrayTest()
        
service.objectTest()
        
//
        
connection.close ();
    }
    
    private function 
onFault ()
    {
        
trace Flashout.WARN 'fault' )
    }
    
    private function 
onResult result )
    {
        var 
response result.result
        
var msg:String ''
        
msg += 'Type of = ' typeof response ) + '\n'
        
msg += 'Instance of String = ' response instanceof String '\n'
        
msg += 'Instance of Array  = ' response instanceof Array + '\n'
        
msg += 'Instance of Object = ' response instanceof Object '\n'
        
trace Flashout.INFO msg )
    }


Der Servicecall stringTest() liefert per Return einen String, und ergibt im Trace folgendes
Code:
[53:55:546] info: AMFPHPTest.onResult()

Type of = string
Instance of String = false
Instance of Array  = false
Instance of Object = false
typeof stimmt hier noch, aber ein instanceof ergibt immer false, why?


Der Servicecall arrayTest() liefert per Return einen Array, und ergibt im Trace folgendes
Code:
[53:55:546] info: AMFPHPTest.onResult()

Type of = object
Instance of String = false
Instance of Array  = true
Instance of Object = true
ok, nicht schön aber halbwegs erklärbar


Der Servicecall objectTest() liefert per Return einen Object, und ergibt im Trace folgendes
Code:
[53:55:546] info: AMFPHPTest.onResult()

Type of = object
Instance of String = false
Instance of Array  = false
Instance of Object = false
Damit komm ich nun garnicht zurecht, hier stimmt nichts. Liegt es an den Remotingklassen, an AMFPHP, oder bin ich einfach nur zu blöd?


lg,
shorty
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shorty (15-01-2007 um 20:22 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 12-02-2007, 11:24   #2 (permalink)
l2l|c4o
 
Benutzerbild von Sir Freako
 
Registriert seit: Nov 2005
Ort: düstere Grotte im Süden
Beiträge: 968
Servus Shorty

Ich weiß jetzt nicht richtig was du vorhast

amfphpService
PHP-Code:
<?
    
require("ItemVO.php");
    class 
AMFPHPService  {

        function 
AMFPHPService() {
            
$this->methodTable = array (
                
"execute" => array  (
                    
"access" => "remote",
                    
"returns" => "array"
                
)
            );
        }
ItemVO
PHP-Code:
<?
    
class ItemVO {
        var 
$value;

        function 
ItemVO($value) {
            
$this->value $value;
        }
    }
?>
das gebe ich in meinem Php file schon an was letztendlich zurückkommt
du willst ja so eine art VO Object nutzen wie man sieht oder ?

Aber stimmt genau deswegen benutze ich ObjectVO
ich brauchs aber auch nur für arrays

Geändert von Sir Freako (12-02-2007 um 11:37 Uhr)
Sir Freako ist offline   Mit Zitat antworten
Alt 14-02-2007, 01:43   #3 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Ja ja, so meinte ich das. String & Array funktionieren, aber bei Object setze ich den return nun auf Recordset, damit kommt flash ganz gut klar. Danke für die späte Hilfe

lg,
shorty
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 14-02-2007, 02:49   #4 (permalink)
l2l|c4o
 
Benutzerbild von Sir Freako
 
Registriert seit: Nov 2005
Ort: düstere Grotte im Süden
Beiträge: 968
no problem !

hehe Shorty @ Nachtaktiv
Sir Freako ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele