public function encode($data, $human_readable = false) { $this->init(); require_once $this->path . 'OutputStream.php'; require_once $this->path . 'Amf3/Serializer.php'; $stream = new Zend_Amf_Parse_OutputStream(); $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream); $serializer->writeTypeMarker($data); return $stream->getStream(); }
/** * Serialize a PHP value to AMF3 format * * @param mixed $value * @param array $opts * @return string * @throws Zend_Serializer_Exception */ public function serialize($value, array $opts = array()) { try { $stream = new Zend_Amf_Parse_OutputStream(); $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream); $serializer->writeTypeMarker($value); return $stream->getStream(); } catch (Exception $e) { throw new Zend_Serializer_Exception('Serialization failed by previous error', 0, $e); } }
public function writeCollection(&$object) { // In order to get around the problems with ZendAMF and Iterator/foreach we create a vanilla object and use _explicitType to // map it on the client. The source property maps to mx.collections.ArrayCollection::source. We also need to add whether // or not the collection is initialized. $wrappedObject = new \stdClass(); $wrappedObject->_explicitType = "org.davekeen.flextrine.orm.collections.PersistentCollection"; if ($object instanceof \Doctrine\ORM\PersistentCollection) { $wrappedObject->source = $object->unwrap()->toArray(); $wrappedObject->isInitialized__ = $object->isInitialized() || sizeof($wrappedObject->source) > 0; } else { $wrappedObject->source = $object->toArray(); $wrappedObject->isInitialized__ = true; } parent::writeObject($wrappedObject); }
/** * Encountered and AMF3 Type Marker use AMF3 serializer. Once AMF3 is * encountered it will not return to AMf0. * * @param string $data * @return Zend_Amf_Parse_Amf0_Serializer */ public function writeAmf3TypeMarker(&$data) { // // require_once 'Zend/Amf/Parse/Amf3/Serializer.php'; $serializer = new Zend_Amf_Parse_Amf3_Serializer($this->_stream); $serializer->writeTypeMarker($data); return $this; }
public function sendData($data) { header("Cache-Control: no-cache, must-revalidate"); header("Expires: 0"); header('Content-Type: ' . $this->format); if ($this->format == RestFormat::AMF) { require_once 'Zend/Amf/Parse/OutputStream.php'; require_once 'Zend/Amf/Parse/Amf3/Serializer.php'; $stream = new Zend_Amf_Parse_OutputStream(); $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream); $serializer->writeTypeMarker($data); $data = $stream->getStream(); } else { if (is_object($data) && method_exists($data, '__keepOut')) { $data = clone $data; foreach ($data->__keepOut() as $prop) { unset($data->{$prop}); } } $data = json_encode($data); if ($data && $this->mode == 'debug') { $data = $this->json_format($data); } } echo $data; }
/** * Encountered and AMF3 Type Marker use AMF3 serializer. Once AMF3 is * encountered it will not return to AMf0. * * @param string $data * @return Zend_Amf_Parse_Amf0_Serializer */ public function writeAmf3TypeMarker(&$data) { $serializer = new Zend_Amf_Parse_Amf3_Serializer($this->_stream); $serializer->writeTypeMarker($data); return $this; }
public function sendData($data) { header('Content-Type: ' . $this->format); if ($this->format == RestFormat::AMF) { require_once 'Zend/Amf/Parse/OutputStream.php'; require_once 'Zend/Amf/Parse/Amf3/Serializer.php'; $stream = new Zend_Amf_Parse_OutputStream(); $serializer = new Zend_Amf_Parse_Amf3_Serializer($stream); $serializer->writeTypeMarker($data); $data = $stream->getStream(); } else { if ($this->format == RestFormat::XML) { $data = ArrayToXML::toXml($data); } else { $data = json_encode($data); if ($data && $this->mode == 'debug') { $data = $this->json_format($data); $mathes = array(); $pattern = '/"new Date\\([0-9\\,\\s]*\\)"/'; $matches = array(); preg_match_all($pattern, $data, $matches); $matches = $matches[0]; foreach ($matches as $match) { $tmpStrLen = strlen($match); $tmpStr = substr($match, 1, $tmpStrLen - 2); $data = str_replace($match, $tmpStr, $data); } } } } echo $data; }