public function writeObject($obj) { $class = get_class($obj); $alias = ClassManager::getClassAlias($class); if (isset($this->classref[$alias])) { $index = $this->classref[$alias]; } else { $reflector = new ReflectionClass($obj); $props = $reflector->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED | ReflectionProperty::IS_PRIVATE); $index = $this->writeClass($alias, $props); } $this->refer->set($obj); $props = $this->propsref[$index]; $this->stream->write(Tags::TagObject . $index . Tags::TagOpenbrace); foreach ($props as $prop) { $this->serialize($prop->getValue($obj)); } $this->stream->write(Tags::TagClosebrace); }