Automatic AMF class mapping in Zend (Part 2)
Polishing off automatic mapping of objects to the correct class from PHP (Zend) back to ActionScript turned out to be easier than I thought.
In addition to the more commonly used $_explicitType class property, Zend also supports using a function called getASClassName. You can either paste this into each of your remote class stubs, or modify the getClassName method in Serializer to do it automatically.
public function getASClassName()
{
return ">" . str_replace("_", ".", get_class($this));
}
Clearly you’ll need to avoid underscores appearing package and class names. That may be true regardless if you’re planning to take advantage of Zend’s automatic class loading.
On the Flash side, if you’re not using the Flex compiler, you can use this to automatically register class aliases to the correct string.
function autoRegisterClassAlias (localClass:Class):void
{
registerClassAlias(">" + flash.utils.describeType(localClass).@name.split("::").join("."), localClass)
}
I’ve made it compatible with the Flex version. If the greater-than character is the cause of annoyance and confusion, feel free to remove it, but you’ll need to do so on the PHP classes as well.
I’m sure this won’t be our last post on this topic. If you’ve got lots of experience with AMF and Zend (I honestly don’t) please post your thoughts in the comments.