[osflash] Return two instances of objects keeping the same reference on the Actionscript side
Evert | Rooftop
evert at rooftopsolutions.nl
Tue Oct 28 17:48:00 PST 2008
You need it on the php side, and the recommended (fastest) way is by
doing something like :
$objects = array();
$object = new Something();
if (isset($objects[spl_object_hash($object)])) {
$index = $objects[spl_object_hash($object)];
// Just serialize a reference to object number $index
} else {
$objects[spl_object_hash($object)] = count($objects);
// first occurrence, serialize the object
}
spl_object_hash requires PHP > 5.2 and needs the SPL extension
(usually there).
However, this needs to be built deep into the AMFPHP AMF0/3 serializer
and is not something you can effectively do from within the service
class. AMF does support this, but I'm not 100% sure if AMFPHP uses this.
On 28-Oct-08, at 8:40 PM, Jonathan Valliere wrote:
> Just did a little research for the amfphp guys, Php2go seems to have
> a Hashmap class( string keys ). However, seems a Dictionary might
> be a better alternative ( unless your hashmap implementation
> supports Objects as keys )
>
> On Oct 28, 2008, at 6:47 PM, Evert | Rooftop wrote:
>
>> The AMF protocol does allow object references, as long as they're
>> in the same packet. So this will not work on multiple requests.
>> There's two howevers:
>>
>> * While a PHP implemention (amfphp) can autodetect it, it is a
>> heavy process as it requires looping through all the objects to see
>> if an object was already used. Now, this could be done using a
>> hashmap.. but not extremely straightforward
>> * You know how your business logic works and what a reference (to a
>> category/id or otherwise) works from a logic perspective. Generally
>> you'd want to avoid any automatic 'magic' and simply supply
>> category id's, and make the references manually.
>>
>> Novice developers love automatic behavior (Classmapping also falls
>> into this category for me) but manual, predictable behavior often
>> produces more maintainable and less error-prone results. </endofrant>
>>
>> Evert
>>
>>
>> On 28-Oct-08, at 4:55 PM, Jonathan Valliere wrote:
>>
>>> It is my understanding that the Native Flash Objects are assembled
>>> automatically in the Flash player based on the AMF data sent.
>>> Just as if you had a custom XML-based object representation and a
>>> parser. Therefore there wouldn't be such a way to do runtime
>>> memory referencing unless the protocol supported it explicitly.
>>>
>>>
>>> On Oct 28, 2008, at 10:27 AM, João Saleiro wrote:
>>>
>>>> Hello,
>>>>
>>>> imagine the following scenario:
>>>>
>>>> - backend in AMFPHP;
>>>> - a remote procedure that returns a complex type:
>>>>
>>>> Categories[]
>>>> CategoryVO (#12334)
>>>> id: 1
>>>> name: Accounting
>>>> etc...
>>>> CategoryVO (#34221)
>>>> id: 2
>>>> name: Reporting
>>>> etc...
>>>>
>>>>
>>>>
>>>> - Another remote procedure that returns another complex object:
>>>>
>>>> UserVO (#5456)
>>>> id: 1
>>>> name: John Doe
>>>> CategoryVO (#2145)
>>>> id: 2
>>>> name: Reporting
>>>>
>>>> The category of the user John Doe is "Reporting", id 2. It's the
>>>> same previously returned by the other service, on the position 1
>>>> of the categories array. The problem is that, on the client side:
>>>>
>>>> categories[1]==user.category
>>>>
>>>> is false. It's the same category, the problem is that when the
>>>> object mapping occurs on the client side, it creates a new
>>>> reference, so they are different instances of the same object.
>>>> Right now, we need to make some loopings on the client-side to
>>>> find and replace references. This involves a lot of work, and has
>>>> performance considerations.
>>>>
>>>> Is it possible, or is there a solution to make same objects
>>>> returned from the server side have same references on the client
>>>> side?
>>>>
>>>> Thanks,
>>>>
>>>> João Saleiro
>>>>
>>>> CTO @ Webfuel
>>>> Adobe Community Expert
>>>> Co-founder of the Portuguese RIA Community
>>>>
>>>> <btn_profile_greytxt_80x15.gif>
>>>> _______________________________________________
>>>> osflash mailing list
>>>> osflash at osflash.org
>>>> http://osflash.org/mailman/listinfo/osflash_osflash.org
>>>
>>> _______________________________________________
>>> osflash mailing list
>>> osflash at osflash.org
>>> http://osflash.org/mailman/listinfo/osflash_osflash.org
>>
>> _______________________________________________
>> osflash mailing list
>> osflash at osflash.org
>> http://osflash.org/mailman/listinfo/osflash_osflash.org
>
>
> _______________________________________________
> osflash mailing list
> osflash at osflash.org
> http://osflash.org/mailman/listinfo/osflash_osflash.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2433 bytes
Desc: not available
URL: <http://osflash.org/pipermail/osflash_osflash.org/attachments/20081028/bf072bd6/attachment-0001.bin>
More information about the osflash
mailing list