$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: ReportingThe 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.categoryis 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 [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org_______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org_______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org_______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ osflash mailing list [email protected] http://osflash.org/mailman/listinfo/osflash_osflash.org
