composer update
This commit is contained in:
parent
f6abc3dce2
commit
71dfaca858
1753 changed files with 45274 additions and 14619 deletions
2
vendor/symfony/serializer/LICENSE
vendored
2
vendor/symfony/serializer/LICENSE
vendored
|
@ -1,4 +1,4 @@
|
|||
Copyright (c) 2004-2018 Fabien Potencier
|
||||
Copyright (c) 2004-2019 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
|
||||
|
|
|
@ -358,20 +358,9 @@ abstract class AbstractNormalizer extends SerializerAwareNormalizer implements N
|
|||
unset($data[$key]);
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
if (null !== $constructorParameter->getClass()) {
|
||||
if (!$this->serializer instanceof DenormalizerInterface) {
|
||||
throw new LogicException(sprintf('Cannot create an instance of %s from serialized data because the serializer inject in "%s" is not a denormalizer', $constructorParameter->getClass(), static::class));
|
||||
}
|
||||
$parameterClass = $constructorParameter->getClass()->getName();
|
||||
$parameterData = $this->serializer->denormalize($parameterData, $parameterClass, $format, $this->createChildContext($context, $paramName));
|
||||
}
|
||||
} catch (\ReflectionException $e) {
|
||||
throw new RuntimeException(sprintf('Could not determine the class of the parameter "%s".', $key), 0, $e);
|
||||
}
|
||||
|
||||
// Don't run set for a parameter passed to the constructor
|
||||
$params[] = $parameterData;
|
||||
$params[] = $this->denormalizeParameter($reflectionClass, $constructorParameter, $paramName, $parameterData, $context, $format);
|
||||
unset($data[$key]);
|
||||
} elseif ($constructorParameter->isDefaultValueAvailable()) {
|
||||
$params[] = $constructorParameter->getDefaultValue();
|
||||
|
@ -390,6 +379,27 @@ abstract class AbstractNormalizer extends SerializerAwareNormalizer implements N
|
|||
return new $class();
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
protected function denormalizeParameter(\ReflectionClass $class, \ReflectionParameter $parameter, $parameterName, $parameterData, array $context, $format = null)
|
||||
{
|
||||
try {
|
||||
if (null !== $parameter->getClass()) {
|
||||
if (!$this->serializer instanceof DenormalizerInterface) {
|
||||
throw new LogicException(sprintf('Cannot create an instance of %s from serialized data because the serializer inject in "%s" is not a denormalizer', $parameter->getClass(), static::class));
|
||||
}
|
||||
$parameterClass = $parameter->getClass()->getName();
|
||||
|
||||
return $this->serializer->denormalize($parameterData, $parameterClass, $format, $this->createChildContext($context, $parameterName));
|
||||
}
|
||||
|
||||
return $parameterData;
|
||||
} catch (\ReflectionException $e) {
|
||||
throw new RuntimeException(sprintf('Could not determine the class of the parameter "%s".', $parameterName), 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $parentContext
|
||||
* @param string $attribute
|
||||
|
|
|
@ -304,6 +304,18 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer
|
|||
throw new NotNormalizableValueException(sprintf('The type of the "%s" attribute for class "%s" must be one of "%s" ("%s" given).', $attribute, $currentClass, implode('", "', array_keys($expectedTypes)), \gettype($data)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
protected function denormalizeParameter(\ReflectionClass $class, \ReflectionParameter $parameter, $parameterName, $parameterData, array $context, $format = null)
|
||||
{
|
||||
if (null === $this->propertyTypeExtractor || null === $types = $this->propertyTypeExtractor->getTypes($class->getName(), $parameterName)) {
|
||||
return parent::denormalizeParameter($class, $parameter, $parameterName, $parameterData, $context, $format);
|
||||
}
|
||||
|
||||
return $this->validateAndDenormalize($class->getName(), $parameterName, $parameterData, $format, $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an attribute and apply the name converter if necessary.
|
||||
*
|
||||
|
|
|
@ -59,7 +59,8 @@ class DateTimeNormalizer implements NormalizerInterface, DenormalizerInterface
|
|||
$timezone = $this->getTimezone($context);
|
||||
|
||||
if (null !== $timezone) {
|
||||
$object = (new \DateTimeImmutable('@'.$object->getTimestamp()))->setTimezone($timezone);
|
||||
$object = clone $object;
|
||||
$object = $object->setTimezone($timezone);
|
||||
}
|
||||
|
||||
return $object->format($format);
|
||||
|
|
128
vendor/symfony/serializer/Tests/DeserializeNestedArrayOfObjectsTest.php
vendored
Normal file
128
vendor/symfony/serializer/Tests/DeserializeNestedArrayOfObjectsTest.php
vendored
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?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;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
|
||||
use Symfony\Component\Serializer\Encoder\JsonEncoder;
|
||||
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
||||
use Symfony\Component\Serializer\Serializer;
|
||||
|
||||
class DeserializeNestedArrayOfObjectsTest extends TestCase
|
||||
{
|
||||
public function provider()
|
||||
{
|
||||
return array(
|
||||
//from property PhpDoc
|
||||
array(Zoo::class),
|
||||
//from argument constructor PhpDoc
|
||||
array(ZooImmutable::class),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provider
|
||||
*/
|
||||
public function testPropertyPhpDoc($class)
|
||||
{
|
||||
//GIVEN
|
||||
$json = <<<EOF
|
||||
{
|
||||
"animals": [
|
||||
{"name": "Bug"}
|
||||
]
|
||||
}
|
||||
EOF;
|
||||
$serializer = new Serializer(array(
|
||||
new ObjectNormalizer(null, null, null, new PhpDocExtractor()),
|
||||
new ArrayDenormalizer(),
|
||||
), array('json' => new JsonEncoder()));
|
||||
//WHEN
|
||||
/** @var Zoo $zoo */
|
||||
$zoo = $serializer->deserialize($json, $class, 'json');
|
||||
//THEN
|
||||
self::assertCount(1, $zoo->getAnimals());
|
||||
self::assertInstanceOf(Animal::class, $zoo->getAnimals()[0]);
|
||||
}
|
||||
}
|
||||
|
||||
class Zoo
|
||||
{
|
||||
/** @var Animal[] */
|
||||
private $animals = array();
|
||||
|
||||
/**
|
||||
* @return Animal[]
|
||||
*/
|
||||
public function getAnimals()
|
||||
{
|
||||
return $this->animals;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Animal[] $animals
|
||||
*/
|
||||
public function setAnimals(array $animals)
|
||||
{
|
||||
$this->animals = $animals;
|
||||
}
|
||||
}
|
||||
|
||||
class ZooImmutable
|
||||
{
|
||||
/** @var Animal[] */
|
||||
private $animals = array();
|
||||
|
||||
/**
|
||||
* @param Animal[] $animals
|
||||
*/
|
||||
public function __construct(array $animals = array())
|
||||
{
|
||||
$this->animals = $animals;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Animal[]
|
||||
*/
|
||||
public function getAnimals()
|
||||
{
|
||||
return $this->animals;
|
||||
}
|
||||
}
|
||||
|
||||
class Animal
|
||||
{
|
||||
/** @var string */
|
||||
private $name;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
echo '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $name
|
||||
*/
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
}
|
|
@ -78,6 +78,82 @@ class DateTimeNormalizerTest extends TestCase
|
|||
yield array('2016-12-01T09:00:00+09:00', new \DateTimeImmutable('2016/12/01', new \DateTimeZone('UTC')), new \DateTimeZone('Japan'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider normalizeUsingTimeZonePassedInContextAndExpectedFormatWithMicrosecondsProvider
|
||||
*/
|
||||
public function testNormalizeUsingTimeZonePassedInContextAndFormattedWithMicroseconds($expected, $expectedFormat, $input, $timezone)
|
||||
{
|
||||
$this->assertSame(
|
||||
$expected,
|
||||
$this->normalizer->normalize(
|
||||
$input,
|
||||
null,
|
||||
array(
|
||||
DateTimeNormalizer::TIMEZONE_KEY => $timezone,
|
||||
DateTimeNormalizer::FORMAT_KEY => $expectedFormat,
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function normalizeUsingTimeZonePassedInContextAndExpectedFormatWithMicrosecondsProvider()
|
||||
{
|
||||
yield array(
|
||||
'2018-12-01T18:03:06.067634',
|
||||
'Y-m-d\TH:i:s.u',
|
||||
\DateTime::createFromFormat(
|
||||
'Y-m-d\TH:i:s.u',
|
||||
'2018-12-01T18:03:06.067634',
|
||||
new \DateTimeZone('UTC')
|
||||
),
|
||||
null,
|
||||
);
|
||||
|
||||
yield array(
|
||||
'2018-12-01T18:03:06.067634',
|
||||
'Y-m-d\TH:i:s.u',
|
||||
\DateTime::createFromFormat(
|
||||
'Y-m-d\TH:i:s.u',
|
||||
'2018-12-01T18:03:06.067634',
|
||||
new \DateTimeZone('UTC')
|
||||
),
|
||||
new \DateTimeZone('UTC'),
|
||||
);
|
||||
|
||||
yield array(
|
||||
'2018-12-01T19:03:06.067634+01:00',
|
||||
'Y-m-d\TH:i:s.uP',
|
||||
\DateTimeImmutable::createFromFormat(
|
||||
'Y-m-d\TH:i:s.u',
|
||||
'2018-12-01T18:03:06.067634',
|
||||
new \DateTimeZone('UTC')
|
||||
),
|
||||
new \DateTimeZone('Europe/Rome'),
|
||||
);
|
||||
|
||||
yield array(
|
||||
'2018-12-01T20:03:06.067634+02:00',
|
||||
'Y-m-d\TH:i:s.uP',
|
||||
\DateTime::createFromFormat(
|
||||
'Y-m-d\TH:i:s.u',
|
||||
'2018-12-01T18:03:06.067634',
|
||||
new \DateTimeZone('UTC')
|
||||
),
|
||||
new \DateTimeZone('Europe/Kiev'),
|
||||
);
|
||||
|
||||
yield array(
|
||||
'2018-12-01T19:03:06.067634',
|
||||
'Y-m-d\TH:i:s.u',
|
||||
\DateTime::createFromFormat(
|
||||
'Y-m-d\TH:i:s.u',
|
||||
'2018-12-01T18:03:06.067634',
|
||||
new \DateTimeZone('UTC')
|
||||
),
|
||||
new \DateTimeZone('Europe/Berlin'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Symfony\Component\Serializer\Exception\InvalidArgumentException
|
||||
* @expectedExceptionMessage The object must implement the "\DateTimeInterface".
|
||||
|
|
2
vendor/symfony/serializer/phpunit.xml.dist
vendored
2
vendor/symfony/serializer/phpunit.xml.dist
vendored
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
|
||||
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
|
||||
backupGlobals="false"
|
||||
colors="true"
|
||||
bootstrap="vendor/autoload.php"
|
||||
|
|
Reference in a new issue