Hello :)

do you use Object.registerClass method to register your VO  classes in
ActionScript ?

You can read in french my article about Class Mapping (AS2 and AS3) and
fixing bug in AS3 in my blog :

http://www.ekameleon.net/blog/index.php?2006/08/28/48--amf-class-mapping-difficile-en-as3

Sorry, the article is write in French ! but the ActionScript and PHP codes
are easy ;)

EKA+ :)



You can use Google translator or babelFish

2006/8/28, Julius Turnmire <[EMAIL PROTECTED]>:

Ok, I've got it working as advertised.  I'm using VO's and my returned
values are being mapped to my VO classes.  But the problem is how
they're mapped.

I decided to work on getting VO's to work in my project in the hopes
that all the string values I get from MySQL would be mapped to their
proper datatypes.  But it didn't quite work the way I had hoped. The
returned values do not get put into the VO class as the datatypes that
are assigned in the class, they get put in as the datatypes that are
returned from PHP.

For instance..

PHP service class:

<?php

class SimpleService
{

    function SimpleService()
    {
        $this->methodTable = array(
            "tester" => array(
                "description" => "tester() :: returns examples",
                "arguments" => array(),
                "access" => "remote",
                "returns" => "TesterVO"
            )
         );
    }

    function tester()
    {
        $TesterVO = array('aString' => 12345, 'aNumber' => '12345');
        return $TesterVO;
    }
}

?>


Flash VO class:

class TesterVO
{

    aString:String;
    aNumber:Number;

    function TesterVO()
    {
    }

}

In this example aString doesn't get mapped to a String, and aNumber
doesn't get mapped to a Number.  aString becomes a Number and aNumber
becomes a string.  Well, I wouldn't normally return types like this, but
I was really hoping to avoid converting strings to numbers, and also the
"1" string that you get when MySql returns a TRUE.

So, I figure that it's all ok..  I'll use getters/setters.  So I set up
those methods in my class, for instance:

...
    __aNumber:Number;

    function set aNumber(newNum):Void
    {
        __aNumber = parseInt(newNum);  //ie  parseInt("12345");
    }

    function get aNumber():Number
    {
        return __aNumber;
    }
...


Guess what happens... my setter basically gets overwritten with
aNumber:String = "12345"..  And my getter returns undefined because the
setter never set __aNumber!  I was under the assumption that the whole
purpose of VO's was so that datatypes get typed properly..  But the way
Flash works, it just overwrites the properties with what's returned.

Now I know I can work around all this, but doesn't it really defeat the
purpose of all of it all?  Aren't Value Object's properties supposed to
use the datatypes that they define?  Am I missing something?  All does
work fine when the returning types correspond.  When array('aNumber' =>
123, 'aString' => "123JustaString", 'aBoolean' => true) is returned I do
get those datatypes.  There's no need to even set the datatypes as it
really wont matter when flash gets a hold of it.

Another thing, but it's minor, is that in this case:

function onResult(myResult:ResultEvent)
{
    var theResult:TesterVO = myResult.result;
}

Flash will error on compile.  It really thinks that myResult.result will
be of the datatype Object.  Shouldn't they have left that untyped?

Now before you think that my VO's really aren't getting mapped, they
are.  I've made sure of that, any methods I put in that class are
accessible upon receiving data from the server..

Any thoughts?  Am I missing something?  I've been very happy with
remoting, and have been using it with great success for some time now.
But, I was really hoping that spending the time to get VO's working
would be worth it.  Boy was I disappointed.  It just seems to be more
work then what it's worth.


_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to