Merge branch '3.4' into 4.2
* 3.4: [HttpFoundation] Throw exception when the \"session\" extension is not loaded remove invalid test cases [Serializer] Fixed PHP of DenormalizableInterface::denormalize [Finder] docblock fixes pass error code as a string Catch JsonException and rethrow in JsonEncode
This commit is contained in:
commit
b8c4809a49
|
@ -210,6 +210,10 @@ class FrameworkExtension extends Extension
|
|||
}
|
||||
|
||||
if ($this->isConfigEnabled($container, $config['session'])) {
|
||||
if (!\extension_loaded('session')) {
|
||||
throw new \LogicException('PHP extension "session" is required.');
|
||||
}
|
||||
|
||||
$this->sessionConfigEnabled = true;
|
||||
$this->registerSessionConfiguration($config['session'], $container, $loader);
|
||||
if (!empty($config['test'])) {
|
||||
|
|
|
@ -562,7 +562,7 @@ class Finder implements \IteratorAggregate, \Countable
|
|||
/**
|
||||
* Searches files and directories which match defined rules.
|
||||
*
|
||||
* @param string|array $dirs A directory path or an array of directories
|
||||
* @param string|string[] $dirs A directory path or an array of directories
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
|
|
|
@ -25,7 +25,7 @@ class ExcludeDirectoryFilterIterator extends \FilterIterator implements \Recursi
|
|||
|
||||
/**
|
||||
* @param \Iterator $iterator The Iterator to filter
|
||||
* @param array $directories An array of directories to exclude
|
||||
* @param string[] $directories An array of directories to exclude
|
||||
*/
|
||||
public function __construct(\Iterator $iterator, array $directories)
|
||||
{
|
||||
|
|
|
@ -103,6 +103,10 @@ class NativeSessionStorage implements SessionStorageInterface
|
|||
*/
|
||||
public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null)
|
||||
{
|
||||
if (!\extension_loaded('session')) {
|
||||
throw new \LogicException('PHP extension "session" is required.');
|
||||
}
|
||||
|
||||
$options += [
|
||||
'cache_limiter' => '',
|
||||
'cache_expire' => 0,
|
||||
|
|
|
@ -24,6 +24,10 @@ class PhpBridgeSessionStorage extends NativeSessionStorage
|
|||
*/
|
||||
public function __construct($handler = null, MetadataBag $metaBag = null)
|
||||
{
|
||||
if (!\extension_loaded('session')) {
|
||||
throw new \LogicException('PHP extension "session" is required.');
|
||||
}
|
||||
|
||||
$this->setMetadataBag($metaBag);
|
||||
$this->setSaveHandler($handler);
|
||||
}
|
||||
|
|
|
@ -47,14 +47,19 @@ class JsonEncode implements EncoderInterface
|
|||
*/
|
||||
public function encode($data, $format, array $context = [])
|
||||
{
|
||||
$jsonEncodeOptions = $context[self::OPTIONS] ?? $this->defaultContext[self::OPTIONS];
|
||||
$encodedJson = json_encode($data, $jsonEncodeOptions);
|
||||
$options = $context[self::OPTIONS] ?? $this->defaultContext[self::OPTIONS];
|
||||
|
||||
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $jsonEncodeOptions)) {
|
||||
try {
|
||||
$encodedJson = json_encode($data, $options);
|
||||
} catch (\JsonException $e) {
|
||||
throw new NotEncodableValueException($e->getMessage(), 0, $e);
|
||||
}
|
||||
|
||||
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $options)) {
|
||||
return $encodedJson;
|
||||
}
|
||||
|
||||
if (JSON_ERROR_NONE !== json_last_error() && (false === $encodedJson || !($jsonEncodeOptions & JSON_PARTIAL_OUTPUT_ON_ERROR))) {
|
||||
if (JSON_ERROR_NONE !== json_last_error() && (false === $encodedJson || !($options & JSON_PARTIAL_OUTPUT_ON_ERROR))) {
|
||||
throw new NotEncodableValueException(json_last_error_msg());
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ interface DenormalizableInterface
|
|||
* differently based on different input formats
|
||||
* @param array $context Options for denormalizing
|
||||
*
|
||||
* @return object
|
||||
* @return object|object[]
|
||||
*/
|
||||
public function denormalize(DenormalizerInterface $denormalizer, $data, $format = null, array $context = []);
|
||||
}
|
||||
|
|
|
@ -148,20 +148,6 @@ abstract class AbstractComparisonValidatorTestCase extends ConstraintValidatorTe
|
|||
$this->assertNoViolation();
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideValidComparisonsToPropertyPath
|
||||
*/
|
||||
public function testValidComparisonToPropertyPathOnArray($comparedValue)
|
||||
{
|
||||
$constraint = $this->createConstraint(['propertyPath' => '[root][value]']);
|
||||
|
||||
$this->setObject(['root' => ['value' => 5]]);
|
||||
|
||||
$this->validator->validate($comparedValue, $constraint);
|
||||
|
||||
$this->assertNoViolation();
|
||||
}
|
||||
|
||||
public function testNoViolationOnNullObjectWithPropertyPath()
|
||||
{
|
||||
$constraint = $this->createConstraint(['propertyPath' => 'propertyPath']);
|
||||
|
|
|
@ -511,7 +511,7 @@ abstract class AbstractTest extends AbstractValidatorTest
|
|||
->setParameter('%param%', 'value')
|
||||
->setInvalidValue('Invalid value')
|
||||
->setPlural(2)
|
||||
->setCode(42)
|
||||
->setCode('42')
|
||||
->addViolation();
|
||||
};
|
||||
|
||||
|
@ -528,7 +528,7 @@ abstract class AbstractTest extends AbstractValidatorTest
|
|||
$this->assertSame($entity, $violations[0]->getRoot());
|
||||
$this->assertSame('Invalid value', $violations[0]->getInvalidValue());
|
||||
$this->assertSame(2, $violations[0]->getPlural());
|
||||
$this->assertSame(42, $violations[0]->getCode());
|
||||
$this->assertSame('42', $violations[0]->getCode());
|
||||
}
|
||||
|
||||
public function testNoDuplicateValidationIfClassConstraintInMultipleGroups()
|
||||
|
|
Reference in New Issue