Created
June 22, 2012 12:17
-
-
Save rosstuck/2972413 to your computer and use it in GitHub Desktop.
Bootstrapping JMS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use Metadata\MetadataFactory; | |
use JMS\SerializerBundle\Serializer\Handler\DeserializationHandlerInterface; | |
use JMS\SerializerBundle\Serializer\Handler\SerializationHandlerInterface; | |
use JMS\SerializerBundle\Serializer\VisitorInterface; | |
use JMS\SerializerBundle\Serializer\XmlDeserializationVisitor; | |
use JMS\SerializerBundle\Serializer\Construction\UnserializeObjectConstructor; | |
use JMS\SerializerBundle\Serializer\JsonDeserializationVisitor; | |
use JMS\SerializerBundle\Serializer\Handler\ObjectBasedCustomHandler; | |
use JMS\SerializerBundle\Serializer\Handler\DateTimeHandler; | |
use JMS\SerializerBundle\Serializer\Handler\DoctrineProxyHandler; | |
use JMS\SerializerBundle\Serializer\XmlSerializationVisitor; | |
use JMS\SerializerBundle\Metadata\Driver\AnnotationDriver; | |
use JMS\SerializerBundle\Serializer\Naming\CamelCaseNamingStrategy; | |
use JMS\SerializerBundle\Serializer\Naming\SerializedNameAnnotationStrategy; | |
use JMS\SerializerBundle\Serializer\JsonSerializationVisitor; | |
use JMS\SerializerBundle\Serializer\Serializer; | |
use Doctrine\Common\Annotations\AnnotationRegistry; | |
protected function createSerializer($driver) | |
{ | |
$namingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy()); | |
$objectConstructor = new UnserializeObjectConstructor(); | |
$customSerializationHandlers = array( | |
new DateTimeHandler(), | |
new DoctrineProxyHandler(), | |
); | |
$customDeserializationHandlers = array( | |
new DateTimeHandler(), | |
new ArrayCollectionHandler(), | |
); | |
$serializationVisitors = array( | |
'json' => new JsonSerializationVisitor($namingStrategy, $customSerializationHandlers), | |
'xml' => new XmlSerializationVisitor($namingStrategy, $customSerializationHandlers), | |
); | |
$deserializationVisitors = array( | |
'json' => new JsonDeserializationVisitor($namingStrategy, $customDeserializationHandlers, $objectConstructor), | |
'xml' => new XmlDeserializationVisitor($namingStrategy, $customDeserializationHandlers, $objectConstructor), | |
); | |
$factory = new MetadataFactory($driver); | |
return new Serializer($factory, $serializationVisitors, $deserializationVisitors); | |
} | |
protected function getBaseDriver() | |
{ | |
if ($this->_baseDriver) { | |
return $this->_baseDriver; | |
} | |
// Register the ORM Annotations in the AnnotationRegistry | |
$reader = new \Doctrine\Common\Annotations\SimpleAnnotationReader(); | |
AnnotationRegistry::registerFile(__DIR__ . '/../AnnotationList.php'); | |
$reader->addNamespace('JMS\SerializerBundle\Annotation'); | |
return new AnnotationDriver($reader); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment