Example #1
0
File: AMF0.php Project: stunti/zf2
 /**
  * Serialize a PHP value to AMF0 format
  * 
  * @param  mixed $value 
  * @param  array $opts 
  * @return string
  * @throws \Zend\Serializer\Exception
  */
 public function serialize($value, array $opts = array())
 {
     try {
         $stream = new AMFParser\OutputStream();
         $serializer = new AMFParser\AMF0\Serializer($stream);
         $serializer->writeTypeMarker($value);
         return $stream->getStream();
     } catch (\Exception $e) {
         throw new SerializationException('Serialization failed by previous error', 0, $e);
     }
 }
Example #2
0
 /**
  * Serialize a PHP value to AMF0 format
  * 
  * @param  mixed $value 
  * @param  array $opts 
  * @return string
  * @throws Zend\Serializer\Exception
  */
 public function serialize($value, array $opts = array())
 {
     try {
         $stream = new AmfParser\OutputStream();
         $serializer = new AmfParser\Amf0\Serializer($stream);
         $serializer->writeTypeMarker($value);
         return $stream->getStream();
     } catch (\Exception $e) {
         throw new RuntimeException('Serialization failed: ' . $e->getMessage(), 0, $e);
     }
 }
Example #3
0
 /**
  * Serialize the PHP data types back into Actionscript and
  * create and AMF stream.
  *
  * @param  \Zend\Amf\Parser\OutputStream $stream
  * @return \Zend\Amf\Response\StreamResponse
  */
 public function writeMessage(Parser\OutputStream $stream)
 {
     $objectEncoding = $this->_objectEncoding;
     //Write encoding to start of stream. Preamble byte is written of two byte Unsigned Short
     $stream->writeByte(0x0);
     $stream->writeByte($objectEncoding);
     // Loop through the AMF Headers that need to be returned.
     $headerCount = count($this->_headers);
     $stream->writeInt($headerCount);
     foreach ($this->getAmfHeaders() as $header) {
         $serializer = new Amf0\Serializer($stream);
         $stream->writeUTF($header->name);
         $stream->writeByte($header->mustRead);
         $stream->writeLong(Amf\Constants::UNKNOWN_CONTENT_LENGTH);
         if (is_object($header->data)) {
             // Workaround for PHP5 with E_STRICT enabled complaining about
             // "Only variables should be passed by reference"
             $placeholder = null;
             $serializer->writeTypeMarker($placeholder, null, $header->data);
         } else {
             $serializer->writeTypeMarker($header->data);
         }
     }
     // loop through the AMF bodies that need to be returned.
     $bodyCount = count($this->_bodies);
     $stream->writeInt($bodyCount);
     foreach ($this->_bodies as $body) {
         $serializer = new Amf0\Serializer($stream);
         $stream->writeUTF($body->getTargetURI());
         $stream->writeUTF($body->getResponseURI());
         $stream->writeLong(Amf\Constants::UNKNOWN_CONTENT_LENGTH);
         $bodyData = $body->getData();
         $markerType = $this->_objectEncoding == Amf\Constants::AMF0_OBJECT_ENCODING ? null : Amf\Constants::AMF0_AMF3;
         if (is_object($bodyData)) {
             // Workaround for PHP5 with E_STRICT enabled complaining about
             // "Only variables should be passed by reference"
             $placeholder = null;
             $serializer->writeTypeMarker($placeholder, $markerType, $bodyData);
         } else {
             $serializer->writeTypeMarker($bodyData, $markerType);
         }
     }
     return $this;
 }
Example #4
0
 /**
  * Serialize the PHP data types back into Actionscript and
  * create and AMF stream.
  *
  * @param  \Zend\AMF\Parser\OutputStream $stream
  * @return \Zend\AMF\Response\StreamResponse
  */
 public function writeMessage(Parser\OutputStream $stream)
 {
     $objectEncoding = $this->_objectEncoding;
     //Write encoding to start of stream. Preamble byte is written of two byte Unsigned Short
     $stream->writeByte(0x0);
     $stream->writeByte($objectEncoding);
     // Loop through the AMF Headers that need to be returned.
     $headerCount = count($this->_headers);
     $stream->writeInt($headerCount);
     foreach ($this->getAmfHeaders() as $header) {
         $serializer = new AMF0\Serializer($stream);
         $stream->writeUTF($header->name);
         $stream->writeByte($header->mustRead);
         $stream->writeLong(AMF\Constants::UNKNOWN_CONTENT_LENGTH);
         $serializer->writeTypeMarker($header->data);
     }
     // loop through the AMF bodies that need to be returned.
     $bodyCount = count($this->_bodies);
     $stream->writeInt($bodyCount);
     foreach ($this->_bodies as $body) {
         $serializer = new AMF0\Serializer($stream);
         $stream->writeUTF($body->getTargetURI());
         $stream->writeUTF($body->getResponseURI());
         $stream->writeLong(AMF\Constants::UNKNOWN_CONTENT_LENGTH);
         if ($this->_objectEncoding == AMF\Constants::AMF0_OBJECT_ENCODING) {
             $serializer->writeTypeMarker($body->getData());
         } else {
             // Content is AMF3
             $serializer->writeTypeMarker($body->getData(), AMF\Constants::AMF0_AMF3);
         }
     }
     return $this;
 }