Revert "Issue #1894508 by linclark, damiankloip: Update symfony/serializer."

Caused a conflict with a higher-priority patch; temporary rollback for now.

This reverts commit ba6d3fb7f5.
8.0.x
webchick 2013-01-25 10:15:12 -08:00
parent 783caf38c6
commit dc28083a7c
39 changed files with 150 additions and 331 deletions

8
core/composer.lock generated
View File

@ -811,18 +811,18 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c"
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/45fe843e3144a594f93a6a372385c6534c7df31c.zip",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c",
"url": "https://github.com/symfony/Serializer/archive/ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0.zip",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2013-01-19 07:50:02",
"time": "2012-12-19 07:09:49",
"type": "library",
"extra": {
"branch-alias": {

View File

@ -32,7 +32,7 @@ class ComplexDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$attributes = array();
foreach ($object as $name => $field) {
$attributes[$name] = $this->serializer->normalize($field, $format);

View File

@ -31,7 +31,7 @@ class ListNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$attributes = array();
foreach ($object as $fieldItem) {
$attributes[] = $this->serializer->normalize($fieldItem, $format);

View File

@ -25,7 +25,7 @@ class TypedDataNormalizer extends NormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize().
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
return $object->getValue();
}

View File

@ -44,9 +44,9 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::encode().
*/
public function encode($data, $format, array $context = array()){
$normalized = $this->serializer->normalize($data, $format, $context);
return $this->baseEncoder->encode($normalized, $format, $context);
public function encode($data, $format){
$normalized = $this->serializer->normalize($data, $format);
return $this->baseEncoder->encode($normalized, $format);
}
/**
@ -59,8 +59,8 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
/**
* Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::decode().
*/
public function decode($data, $format, array $context = array()){
return $this->baseEncoder->decode($data, $format, $context);
public function decode($data, $format){
return $this->baseEncoder->decode($data, $format);
}
/**

View File

@ -27,7 +27,7 @@ class JsonldEntityNormalizer extends JsonldNormalizerBase implements Denormalize
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($entity, $format = NULL, array $context = array()) {
public function normalize($entity, $format = NULL) {
$entity_wrapper = new JsonldEntityWrapper($entity, $format, $this->serializer, $this->siteSchemaManager);
$attributes = $entity_wrapper->getProperties();
@ -43,7 +43,7 @@ class JsonldEntityNormalizer extends JsonldNormalizerBase implements Denormalize
*
* @throws \Symfony\Component\Serializer\Exception\UnexpectedValueException
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
if (!isset($data['@type'])) {
throw new UnexpectedValueException('JSON-LD @type parameter must be included.');
}

View File

@ -30,7 +30,7 @@ class JsonldEntityReferenceNormalizer extends JsonldNormalizerBase implements De
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
// @todo If an $options parameter is added to the serialize signature, as
// requested in https://github.com/symfony/symfony/pull/4938, then instead
// of creating the array of properties, we could simply call normalize and
@ -45,7 +45,7 @@ class JsonldEntityReferenceNormalizer extends JsonldNormalizerBase implements De
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
// @todo Support denormalization for Entity Reference.
return array();
}

View File

@ -27,14 +27,14 @@ class JsonldFieldItemNormalizer extends JsonldNormalizerBase implements Denormal
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
return $object->getPropertyValues();
}
/**
* Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::denormalize()
*/
public function denormalize($data, $class, $format = null, array $context = array()) {
public function denormalize($data, $class, $format = null) {
// For most fields, the field items array should simply be returned as is.
return $data;
}

View File

@ -25,7 +25,7 @@ class JsonldRdfSchemaNormalizer extends JsonldNormalizerBase {
/**
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize()
*/
public function normalize($data, $format = NULL, array $context = array()) {
public function normalize($data, $format = NULL) {
$normalized = array();
$graph = $data->getGraph();

View File

@ -29,7 +29,7 @@ class SerializationTestEncoder implements EncoderInterface {
* @return string
* A string representation of $data in the requested format.
*/
public function encode($data, $format, array $context = array()) {
public function encode($data, $format) {
// @see Drupal\serialization_test\SerializationTestNormalizer::normalize().
return 'Normalized by ' . $data['normalized_by'] . ', Encoded by SerializationTestEncoder';
}

View File

@ -30,7 +30,7 @@ class SerializationTestNormalizer implements NormalizerInterface {
* An array containing a normalized representation of $object, appropriate
* for encoding to the requested format.
*/
public function normalize($object, $format = NULL, array $context = array()) {
public function normalize($object, $format = NULL) {
$normalized = (array) $object;
// Add identifying value that can be used to verify that the expected
// normalizer was invoked.

View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0::getLoader();
return ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a::getLoader();

View File

@ -2,7 +2,7 @@
// autoload_real.php generated by Composer
class ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0
class ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a
{
private static $loader;
@ -19,9 +19,9 @@ class ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0', 'loadClassLoader'));
spl_autoload_register(array('ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a', 'loadClassLoader'));
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a', 'loadClassLoader'));
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

View File

@ -575,6 +575,55 @@
"description": "Symfony Routing Component",
"homepage": "http://symfony.com"
},
{
"name": "symfony/serializer",
"version": "dev-master",
"version_normalized": "9999999-dev",
"target-dir": "Symfony/Component/Serializer",
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0.zip",
"reference": "ef3d92815bdb07281ee8cbd73b3e3f9e41bdc1a0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2012-12-19 07:09:49",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Serializer\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony Serializer Component",
"homepage": "http://symfony.com"
},
{
"name": "symfony/yaml",
"version": "dev-master",
@ -931,54 +980,5 @@
"database",
"routing"
]
},
{
"name": "symfony/serializer",
"version": "dev-master",
"version_normalized": "9999999-dev",
"target-dir": "Symfony/Component/Serializer",
"source": {
"type": "git",
"url": "https://github.com/symfony/Serializer",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c"
},
"dist": {
"type": "zip",
"url": "https://github.com/symfony/Serializer/archive/45fe843e3144a594f93a6a372385c6534c7df31c.zip",
"reference": "45fe843e3144a594f93a6a372385c6534c7df31c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2013-01-19 07:50:02",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
}
},
"installation-source": "source",
"autoload": {
"psr-0": {
"Symfony\\Component\\Serializer\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony Serializer Component",
"homepage": "http://symfony.com"
}
]

View File

@ -0,0 +1,2 @@
/Tests export-ignore
phpunit.xml.dist export-ignore

View File

@ -1,16 +1,6 @@
CHANGELOG
=========
2.2.0
-----
* [BC BREAK] All Serializer, Normalizer and Encoder interfaces have been
modified to include an optional `$context` array parameter.
* The XML Root name can now be configured with the `xml_root_name`
parameter in the context option to the `XmlEncoder`.
* Options to `json_encode` and `json_decode` can be passed through
the context options of `JsonEncode` and `JsonDecode` encoder/decoders.
2.1.0
-----

View File

@ -34,9 +34,9 @@ class ChainDecoder implements DecoderInterface
/**
* {@inheritdoc}
*/
final public function decode($data, $format, array $context = array())
final public function decode($data, $format)
{
return $this->getDecoder($format)->decode($data, $format, $context);
return $this->getDecoder($format)->decode($data, $format);
}
/**

View File

@ -35,9 +35,9 @@ class ChainEncoder implements EncoderInterface
/**
* {@inheritdoc}
*/
final public function encode($data, $format, array $context = array())
final public function encode($data, $format)
{
return $this->getEncoder($format)->encode($data, $format, $context);
return $this->getEncoder($format)->encode($data, $format);
}
/**

View File

@ -23,11 +23,10 @@ interface DecoderInterface
*
* @param scalar $data Data to decode
* @param string $format Format name
* @param array $context options that decoders have access to.
*
* @return mixed
*/
public function decode($data, $format, array $context = array());
public function decode($data, $format);
/**
* Checks whether the serializer can decode from given format

View File

@ -23,11 +23,10 @@ interface EncoderInterface
*
* @param mixed $data Data to encode
* @param string $format Format name
* @param array $context options that normalizers/encoders have access to.
*
* @return scalar
*/
public function encode($data, $format, array $context = array());
public function encode($data, $format);
/**
* Checks whether the serializer can encode to given format

View File

@ -21,7 +21,6 @@ class JsonDecode implements DecoderInterface
private $associative;
private $recursionDepth;
private $lastError = JSON_ERROR_NONE;
protected $serializer;
public function __construct($associative = false, $depth = 512)
{
@ -49,20 +48,9 @@ class JsonDecode implements DecoderInterface
*
* @return mixed
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
$context = $this->resolveContext($context);
$associative = $context['json_decode_associative'];
$recursionDepth = $context['json_decode_recursion_depth'];
$options = $context['json_decode_options'];
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
$decodedData = json_decode($data, $associative, $recursionDepth, $options);
} else {
$decodedData = json_decode($data, $associative, $recursionDepth);
}
$decodedData = json_decode($data, $this->associative, $this->recursionDepth);
$this->lastError = json_last_error();
return $decodedData;
@ -75,21 +63,4 @@ class JsonDecode implements DecoderInterface
{
return JsonEncoder::FORMAT === $format;
}
/**
* Merge the default options of the Json Decoder with the passed context.
*
* @param array $context
* @return array
*/
private function resolveContext(array $context)
{
$defaultOptions = array(
'json_decode_associative' => $this->associative,
'json_decode_recursion_depth' => $this->recursionDepth,
'json_decode_options' => 0
);
return array_merge($defaultOptions, $context);
}
}

View File

@ -41,13 +41,14 @@ class JsonEncode implements EncoderInterface
/**
* Encodes PHP data to a JSON string
*
* {@inheritdoc}
* @param mixed $data
* @param string $format
*
* @return string
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
$context = $this->resolveContext($context);
$encodedJson = json_encode($data, $context['json_encode_options']);
$encodedJson = json_encode($data, $this->options);
$this->lastError = json_last_error();
return $encodedJson;
@ -60,15 +61,4 @@ class JsonEncode implements EncoderInterface
{
return JsonEncoder::FORMAT === $format;
}
/**
* Merge default json encode options with context.
*
* @param array $context
* @return array
*/
private function resolveContext(array $context = array())
{
return array_merge(array('json_encode_options' => $this->options), $context);
}
}

View File

@ -59,17 +59,17 @@ class JsonEncoder implements EncoderInterface, DecoderInterface
/**
* {@inheritdoc}
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
return $this->encodingImpl->encode($data, self::FORMAT, $context);
return $this->encodingImpl->encode($data, self::FORMAT);
}
/**
* {@inheritdoc}
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
return $this->decodingImpl->decode($data, self::FORMAT, $context);
return $this->decodingImpl->decode($data, self::FORMAT);
}
/**

View File

@ -26,36 +26,24 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
private $format;
private $rootNodeName = 'response';
/**
* Construct new XmlEncoder and allow to change the root node element name.
*
* @param string $rootNodeName
*/
public function __construct($rootNodeName = 'response')
{
$this->rootNodeName = $rootNodeName;
}
/**
* {@inheritdoc}
*/
public function encode($data, $format, array $context = array())
public function encode($data, $format)
{
if ($data instanceof \DOMDocument) {
return $data->saveXML();
}
$xmlRootNodeName = $this->resolveXmlRootName($context);
$this->dom = new \DOMDocument();
$this->format = $format;
if (null !== $data && !is_scalar($data)) {
$root = $this->dom->createElement($xmlRootNodeName);
$root = $this->dom->createElement($this->rootNodeName);
$this->dom->appendChild($root);
$this->buildXml($root, $data, $xmlRootNodeName);
$this->buildXml($root, $data);
} else {
$this->appendNode($this->dom, $data, $xmlRootNodeName);
$this->appendNode($this->dom, $data, $this->rootNodeName);
}
return $this->dom->saveXML();
@ -64,7 +52,7 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
/**
* {@inheritdoc}
*/
public function decode($data, $format, array $context = array())
public function decode($data, $format)
{
$internalErrors = libxml_use_internal_errors(true);
$disableEntities = libxml_disable_entity_loader(true);
@ -281,13 +269,12 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
*
* @param DOMNode $parentNode
* @param array|object $data data
* @param string $xmlRootNodeName
*
* @return Boolean
*
* @throws UnexpectedValueException
*/
private function buildXml($parentNode, $data, $xmlRootNodeName)
private function buildXml($parentNode, $data)
{
$append = true;
@ -323,24 +310,21 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
return $append;
}
if (is_object($data)) {
$data = $this->serializer->normalize($data, $this->format);
if (null !== $data && !is_scalar($data)) {
return $this->buildXml($parentNode, $data, $xmlRootNodeName);
return $this->buildXml($parentNode, $data);
}
// top level data object was normalized into a scalar
if (!$parentNode->parentNode->parentNode) {
$root = $parentNode->parentNode;
$root->removeChild($parentNode);
return $this->appendNode($root, $data, $xmlRootNodeName);
return $this->appendNode($root, $data, $this->rootNodeName);
}
return $this->appendNode($parentNode, $data, 'data');
}
throw new UnexpectedValueException('An unexpected value could not be serialized: '.var_export($data, true));
}
@ -392,7 +376,7 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
private function selectNodeType($node, $val)
{
if (is_array($val)) {
return $this->buildXml($node, $val, null);
return $this->buildXml($node, $val);
} elseif ($val instanceof \SimpleXMLElement) {
$child = $this->dom->importNode(dom_import_simplexml($val), true);
$node->appendChild($child);
@ -415,15 +399,4 @@ class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, Dec
return true;
}
/**
* Get real XML root node name, taking serializer options into account.
*/
private function resolveXmlRootName(array $context = array())
{
return isset($context['xml_root_node_name'])
? $context['xml_root_node_name']
: $this->rootNodeName;
}
}

View File

@ -1,4 +1,4 @@
Copyright (c) 2004-2013 Fabien Potencier
Copyright (c) 2004-2012 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -19,18 +19,18 @@ class CustomNormalizer extends SerializerAwareNormalizer implements NormalizerIn
/**
* {@inheritdoc}
*/
public function normalize($object, $format = null, array $context = array())
public function normalize($object, $format = null)
{
return $object->normalize($this->serializer, $format, $context);
return $object->normalize($this->serializer, $format);
}
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = null, array $context = array())
public function denormalize($data, $class, $format = null)
{
$object = new $class;
$object->denormalize($this->serializer, $data, $format, $context);
$object->denormalize($this->serializer, $data, $format);
return $object;
}

View File

@ -32,7 +32,6 @@ interface DenormalizableInterface
* @param array|scalar $data The data from which to re-create the object.
* @param string|null $format The format is optionally given to be able to denormalize differently
* based on different input formats.
* @param array $context options for denormalizing
*/
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array());
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null);
}

View File

@ -24,11 +24,10 @@ interface DenormalizerInterface
* @param mixed $data data to restore
* @param string $class the expected class to instantiate
* @param string $format format the given data was extracted from
* @param array $context options available to the denormalizer
*
* @return object
*/
public function denormalize($data, $class, $format = null, array $context = array());
public function denormalize($data, $class, $format = null);
/**
* Checks whether the given class is supported for denormalization by this normalizer

View File

@ -69,7 +69,7 @@ class GetSetMethodNormalizer extends SerializerAwareNormalizer implements Normal
/**
* {@inheritdoc}
*/
public function normalize($object, $format = null, array $context = array())
public function normalize($object, $format = null)
{
$reflectionObject = new \ReflectionObject($object);
$reflectionMethods = $reflectionObject->getMethods(\ReflectionMethod::IS_PUBLIC);
@ -101,7 +101,7 @@ class GetSetMethodNormalizer extends SerializerAwareNormalizer implements Normal
/**
* {@inheritdoc}
*/
public function denormalize($data, $class, $format = null, array $context = array())
public function denormalize($data, $class, $format = null)
{
$reflectionClass = new \ReflectionClass($class);
$constructor = $reflectionClass->getConstructor();

View File

@ -31,9 +31,8 @@ interface NormalizableInterface
* can use it to normalize objects contained within this object.
* @param string|null $format The format is optionally given to be able to normalize differently
* based on different output formats.
* @param array $context Options for normalizing this object
*
* @return array|scalar
*/
public function normalize(NormalizerInterface $normalizer, $format = null, array $context = array());
public function normalize(NormalizerInterface $normalizer, $format = null);
}

View File

@ -23,11 +23,10 @@ interface NormalizerInterface
*
* @param object $object object to normalize
* @param string $format format the normalization result will be encoded as
* @param array $context Context options for the normalizer
*
* @return array|scalar
*/
public function normalize($object, $format = null, array $context = array());
public function normalize($object, $format = null);
/**
* Checks whether the given class is supported for normalization by this normalizer

View File

@ -39,8 +39,8 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
{
protected $encoder;
protected $decoder;
protected $normalizers = array();
protected $normalizerCache = array();
protected $normalizers = array();
protected $normalizerCache = array();
protected $denormalizerCache = array();
public function __construct(array $normalizers = array(), array $encoders = array())
@ -72,58 +72,58 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
/**
* {@inheritdoc}
*/
final public function serialize($data, $format, array $context = array())
final public function serialize($data, $format)
{
if (!$this->supportsEncoding($format)) {
throw new UnexpectedValueException('Serialization for the format '.$format.' is not supported');
}
if ($this->encoder->needsNormalization($format)) {
$data = $this->normalize($data, $format, $context);
$data = $this->normalize($data, $format);
}
return $this->encode($data, $format, $context);
return $this->encode($data, $format);
}
/**
* {@inheritdoc}
*/
final public function deserialize($data, $type, $format, array $context = array())
final public function deserialize($data, $type, $format)
{
if (!$this->supportsDecoding($format)) {
throw new UnexpectedValueException('Deserialization for the format '.$format.' is not supported');
}
$data = $this->decode($data, $format, $context);
$data = $this->decode($data, $format);
return $this->denormalize($data, $type, $format, $context);
return $this->denormalize($data, $type, $format);
}
/**
* {@inheritdoc}
*/
public function normalize($data, $format = null, array $context = array())
public function normalize($data, $format = null)
{
if (null === $data || is_scalar($data)) {
return $data;
}
if (is_object($data) && $this->supportsNormalization($data, $format)) {
return $this->normalizeObject($data, $format, $context);
return $this->normalizeObject($data, $format);
}
if ($data instanceof \Traversable) {
$normalized = array();
foreach ($data as $key => $val) {
$normalized[$key] = $this->normalize($val, $format, $context);
$normalized[$key] = $this->normalize($val, $format);
}
return $normalized;
}
if (is_object($data)) {
return $this->normalizeObject($data, $format, $context);
return $this->normalizeObject($data, $format);
}
if (is_array($data)) {
foreach ($data as $key => $val) {
$data[$key] = $this->normalize($val, $format, $context);
$data[$key] = $this->normalize($val, $format);
}
return $data;
@ -134,9 +134,9 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
/**
* {@inheritdoc}
*/
public function denormalize($data, $type, $format = null, array $context = array())
public function denormalize($data, $type, $format = null)
{
return $this->denormalizeObject($data, $type, $format, $context);
return $this->denormalizeObject($data, $type, $format);
}
/**
@ -202,17 +202,17 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
/**
* {@inheritdoc}
*/
final public function encode($data, $format, array $context = array())
final public function encode($data, $format)
{
return $this->encoder->encode($data, $format, $context);
return $this->encoder->encode($data, $format);
}
/**
* {@inheritdoc}
*/
final public function decode($data, $format, array $context = array())
final public function decode($data, $format)
{
return $this->decoder->decode($data, $format, $context);
return $this->decoder->decode($data, $format);
}
/**
@ -220,14 +220,13 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
*
* @param object $object object to normalize
* @param string $format format name, present to give the option to normalizers to act differently based on formats
* @param array $context The context data for this particular normalization
*
* @return array|scalar
*
* @throws LogicException
* @throws UnexpectedValueException
*/
private function normalizeObject($object, $format = null, array $context = array())
private function normalizeObject($object, $format = null)
{
if (!$this->normalizers) {
throw new LogicException('You must register at least one normalizer to be able to normalize objects.');
@ -235,14 +234,14 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
$class = get_class($object);
if (isset($this->normalizerCache[$class][$format])) {
return $this->normalizerCache[$class][$format]->normalize($object, $format, $context);
return $this->normalizerCache[$class][$format]->normalize($object, $format);
}
foreach ($this->normalizers as $normalizer) {
if ($normalizer->supportsNormalization($object, $format)) {
$this->normalizerCache[$class][$format] = $normalizer;
return $normalizer->normalize($object, $format, $context);
return $normalizer->normalize($object, $format);
}
}
@ -255,28 +254,27 @@ class Serializer implements SerializerInterface, NormalizerInterface, Denormaliz
* @param mixed $data data to restore
* @param string $class the expected class to instantiate
* @param string $format format name, present to give the option to normalizers to act differently based on formats
* @param array $context The context data for this particular denormalization
*
* @return object
*
* @throws LogicException
* @throws UnexpectedValueException
*/
private function denormalizeObject($data, $class, $format = null, array $context = array())
private function denormalizeObject($data, $class, $format = null)
{
if (!$this->normalizers) {
throw new LogicException('You must register at least one normalizer to be able to denormalize objects.');
}
if (isset($this->denormalizerCache[$class][$format])) {
return $this->denormalizerCache[$class][$format]->denormalize($data, $class, $format, $context);
return $this->denormalizerCache[$class][$format]->denormalize($data, $class, $format);
}
foreach ($this->normalizers as $normalizer) {
if ($normalizer->supportsDenormalization($data, $class, $format)) {
$this->denormalizerCache[$class][$format] = $normalizer;
return $normalizer->denormalize($data, $class, $format, $context);
return $normalizer->denormalize($data, $class, $format);
}
}

View File

@ -21,13 +21,12 @@ interface SerializerInterface
/**
* Serializes data in the appropriate format
*
* @param mixed $data any data
* @param string $format format name
* @param array $context options normalizers/encoders have access to
* @param mixed $data any data
* @param string $format format name
*
* @return string
*/
public function serialize($data, $format, array $context = array());
public function serialize($data, $format);
/**
* Deserializes data into the given type.
@ -35,9 +34,8 @@ interface SerializerInterface
* @param mixed $data
* @param string $type
* @param string $format
* @param array $context
*
* @return object
*/
public function deserialize($data, $type, $format, array $context = array());
public function deserialize($data, $type, $format);
}

View File

@ -1,80 +0,0 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\Serializer\Tests\Encoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\CustomNormalizer;
class JsonEncoderTest extends \PHPUnit_Framework_TestCase
{
protected function setUp()
{
$this->encoder = new JsonEncoder;
$this->serializer = new Serializer(array(new CustomNormalizer()), array('json' => new JsonEncoder()));
}
public function testEncodeScalar()
{
$obj = new \stdClass;
$obj->foo = "foo";
$expected = '{"foo":"foo"}';
$this->assertEquals($expected, $this->encoder->encode($obj, 'json'));
}
public function testComplexObject()
{
$obj = $this->getObject();
$expected = $this->getJsonSource();
$this->assertEquals($expected, $this->encoder->encode($obj, 'json'));
}
public function testOptions()
{
$context = array('json_encode_options' => JSON_NUMERIC_CHECK);
$arr = array();
$arr['foo'] = "3";
$expected = '{"foo":3}';
$this->assertEquals($expected, $this->serializer->serialize($arr, 'json', $context));
$arr = array();
$arr['foo'] = "3";
$expected = '{"foo":"3"}';
$this->assertEquals($expected, $this->serializer->serialize($arr, 'json'), 'Context should not be persistent');
}
protected function getJsonSource()
{
return '{"foo":"foo","bar":["a","b"],"baz":{"key":"val","key2":"val","A B":"bar","item":[{"title":"title1"},{"title":"title2"}],"Barry":{"FooBar":{"Baz":"Ed","@id":1}}},"qux":"1"}';
}
protected function getObject()
{
$obj = new \stdClass;
$obj->foo = 'foo';
$obj->bar = array('a', 'b');
$obj->baz = array('key' => 'val', 'key2' => 'val', 'A B' => 'bar', 'item' => array(array('title' => 'title1'), array('title' => 'title2')), 'Barry' => array('FooBar' => array('Baz' => 'Ed', '@id' => 1)));
$obj->qux = "1";
return $obj;
}
}

View File

@ -184,23 +184,6 @@ class XmlEncoderTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($source, $this->encoder->encode($obj, 'xml'));
}
public function testEncodeSerializerXmlRootNodeNameOption()
{
$options = array('xml_root_node_name' => 'test');
$this->encoder = new XmlEncoder;
$serializer = new Serializer(array(), array('xml' => new XmlEncoder()));
$this->encoder->setSerializer($serializer);
$array = array(
'person' => array('@gender' => 'M', '#' => 'Peter'),
);
$expected = '<?xml version="1.0"?>'."\n".
'<test><person gender="M">Peter</person></test>'."\n";
$this->assertEquals($expected, $serializer->serialize($array, 'xml', $options));
}
public function testDecode()
{
$source = $this->getXmlSource();

View File

@ -17,7 +17,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
class DenormalizableDummy implements DenormalizableInterface
{
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array())
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null)
{
}

View File

@ -23,7 +23,7 @@ class Dummy implements NormalizableInterface, DenormalizableInterface
public $baz;
public $qux;
public function normalize(NormalizerInterface $normalizer, $format = null, array $context = array())
public function normalize(NormalizerInterface $normalizer, $format = null)
{
return array(
'foo' => $this->foo,
@ -33,7 +33,7 @@ class Dummy implements NormalizableInterface, DenormalizableInterface
);
}
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array())
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null)
{
$this->foo = $data['foo'];
$this->bar = $data['bar'];

View File

@ -18,7 +18,7 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
class NormalizableTraversableDummy extends TraversableDummy implements NormalizableInterface, DenormalizableInterface
{
public function normalize(NormalizerInterface $normalizer, $format = null, array $context = array())
public function normalize(NormalizerInterface $normalizer, $format = null)
{
return array(
'foo' => 'normalizedFoo',
@ -26,7 +26,7 @@ class NormalizableTraversableDummy extends TraversableDummy implements Normaliza
);
}
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array())
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null)
{
return array(
'foo' => 'denormalizedFoo',

View File

@ -21,12 +21,12 @@ class ScalarDummy implements NormalizableInterface, DenormalizableInterface
public $foo;
public $xmlFoo;
public function normalize(NormalizerInterface $normalizer, $format = null, array $context = array())
public function normalize(NormalizerInterface $normalizer, $format = null)
{
return $format === 'xml' ? $this->xmlFoo : $this->foo;
}
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = array())
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null)
{
if ($format === 'xml') {
$this->xmlFoo = $data;