Read an AMF3 input stream and convert it into PHP data types.

Logic for deserialization of the AMF envelop is based on resources supplied by Adobe Blaze DS. For and example of deserialization please review the BlazeDS source tree.

todo readObject to handle Typed Objects
todo readXMLStrimg to be implemented.
todo Class could be implemented as Factory Class with each data type it's own class.
package Zend_Amf
subpackage Parse_Amf3
copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
license New BSD License
inherited_from \Zend_Amf_Parse_Deserializer

 Methods

Constructor

__construct(\Zend_Amf_Parse_InputStream $stream) : void
Inherited

Parameters

$stream

\Zend_Amf_Parse_InputStream

Read amf array to PHP array

readArray() : array
  • array = 0x09 integer-data ( [ 1OCTET amf3-data ] | [OCTET amf3-data 1] | [ OCTET *amf-data ] )

Returns

array

Read and deserialize a date

readDate() : \Zend_Date

Data is the number of milliseconds elapsed since the epoch of midnight, 1st Jan 1970 in the UTC time zone. Local time zone information is not sent to flash.

  • date = 0x08 integer-data [ number-data ]

Returns

\Zend_Date

Read and deserialize an integer

readInteger() : integer | float

AMF 3 represents smaller integers with fewer bytes using the most significant bit of each byte. The worst case uses 32-bits to represent a 29-bit number, which is what we would have done with no compression.

  • 0x00000000 - 0x0000007F : 0xxxxxxx
  • 0x00000080 - 0x00003FFF : 1xxxxxxx 0xxxxxxx
  • 0x00004000 - 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx
  • 0x00200000 - 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx
  • 0x40000000 - 0xFFFFFFFF : throw range exception

0x04 -> integer type code, followed by up to 4 bytes of data.

Parsing integers on OSFlash for the AMF3 integer data format:

link http://osflash.org/amf3/parsing_integers

Returns

integerfloat

Read an object from the AMF stream and convert it into a PHP object

readObject() : object | array
todo Rather than using an array of traitsInfo create Zend_Amf_Value_TraitsInfo

Returns

objectarray

Read and deserialize a string

readString() : String

Strings can be sent as a reference to a previously occurring String by using an index to the implicit string reference table. Strings are encoding using UTF-8 - however the header may either describe a string literal or a string reference.

  • string = 0x06 string-data
  • string-data = integer-data [ modified-utf-8 ]
  • modified-utf-8 = *OCTET

Returns

String

Read AMF markers and dispatch for deserialization

readTypeMarker(integer $typeMarker = null) : mixed

Checks for AMF marker types and calls the appropriate methods for deserializing those marker types. markers are the data type of the following value.

inherited_from \Zend_Amf_Parse_Deserializer::readTypeMarker()

Parameters

$typeMarker

integer

Exceptions

\Zend_Amf_Exception for unidentified marker type

Returns

mixedWhatever the corresponding PHP data type is

Checks for AMF marker types and calls the appropriate methods for deserializing those marker types. Markers are the data type of the following value.

readTypeMarker($markerType = null) : mixed
Inherited

Parameters

$markerType

Returns

mixedWhatever the data type is of the marker in php

Convert XML to SimpleXml If user wants DomDocument they can use dom_import_simplexml

readXmlString() : \SimpleXml

Returns

\SimpleXmlObject

 Properties

 

Total number of objects in the referenceObject array

$_objectCount : integer

Default

 

An array of reference class definitions per body

$_referenceDefinitions : array

Default

array()
 

An array of reference objects per amf body

$_referenceObjects : array

Default

array()
 

An array of reference strings per amf body

$_referenceStrings : array

Default

array()
 

The raw string that represents the AMF request.

$_stream : \Zend_Amf_Parse_InputStream

Default