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
parent
783caf38c6
commit
dc28083a7c
|
@ -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": {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.');
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -4,4 +4,4 @@
|
|||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit3c7622c3b1ba2ec69ca397628a542de0::getLoader();
|
||||
return ComposerAutoloaderInitdff5596d4902476e49b77f22ebf69e4a::getLoader();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
/Tests export-ignore
|
||||
phpunit.xml.dist export-ignore
|
|
@ -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
|
||||
-----
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
|
@ -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'];
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue