SabreAMF 0.5

All the credit for this release should go to Jim Mischel. He both found a pretty big bug and pushed for flex’ ByteArray support.


  • Fixed a big typo in AMF0 classmapping.
  • Added Flex2 ByteArray support to the AMF3 classmapper. (These data structures map to the SabreAMF_ByteArray class.)

Can be downloaded from here.

Bad Gateway is Toronto-based team of software engineers. We build good APIs and websites.

Want to work with me on your next project?

Email us

Web mentions


  • luchyx


    Sabre AMF is moving FAST! cool.
  • spunkmayer


    Testing SabreAMF (both 0.5 and 0.2 versions) with flex following renaun tut on adobe devnet I always get this error

    [06-Dec-2006 17:31:54] PHP Fatal error: Uncaught exception 'Exception' with message 'Unsupported type: 0x04' in c:\php\includes\SabreAMF\AMF0\Deserializer.php:66
    Stack trace:
    #0 c:\php\includes\SabreAMF\Message.php(162): SabreAMF_AMF0_Deserializer->readAMFData(NULL, true)
    #1 c:\php\includes\SabreAMF\Server.php(72): SabreAMF_Message->deserialize(Object(SabreAMF_InputStream))
    #2 c:\www\sabreamf\flex-gateway\DataServicesServer.php(37): SabreAMF_Server->__construct()
    #3 c:\www\sabreamf\gateway.php(35): Flex_DataServicesServer->__construct()
    #4 {main}
    thrown in c:\php\includes\SabreAMF\AMF0\Deserializer.php on line 66

    This is the code I use with flex:

    var ro:RemoteObject = new RemoteObject();
    ro.destination = "SabreAMF";
    ro.addEventListener("result", onResult);
    ro.addEventListener("fault", onFault);

    What could it be?
  • Evert


    You are attempting to send a movieclip over the wire.. and this is not supported right now...

    I actually didn't know this was possible at all :) The solution is to not send movieclips, but just the data you need.
    Would you mind sending me a saved session from charles (, So I can examine those packages and see if there's any useful information I can extract from movieclips.. Perhaps some properties are being sent and it would be nice if I was able to decode those..
  • spunkmayer


    Thanks, Evert, I've just found that the problem was with this config line in my php.ini

    zend.ze1_compatibility_mode = On

    Changing it to:

    zend.ze1_compatibility_mode = Off

    everything works fine.

    It is nice to note that the service-config.xml file (on the flex side) is not needed, as the endpoint can be dinamically setted with the RemoteObject "endpoint" property:

    var ro:RemoteObject = new RemoteObject();
    // destination must be setted anyway, as it's a required property
    // but its value is not used
    ro.destination = "RandomDummyString";
    // set the dinamic endpoint
    ro.endpoint = "";
    ro.addEventListener("result", onResult);
    ro.addEventListener("fault", onFault);

    Thanks anyway for your attention, and for your really useful Sabre!
  • Evert


    Only use 0.5 by the way.. There's lots of bugs fixed since 0.2
  • Evert


    Ah yes.. it is not intended to work with zend engine 1 compat mode..

    There's a lot of differences in PHP4-mode in terms of object handling.. First time I hear people actually using it..
  • Tom


    Great work! Thanks for continuing to develop this. The only department it lacks in is documentation for novice users. I'm not sure if you've started writing any for the 1.0 release, but if you need any help let me know!