7582b1a09e
* 3.3: [VarDumper] Dont use empty(), it chokes on eg GMP objects [Dotenv] Changed preg_match flags from null to 0 remove upgrade instructions for kernel.root_dir [HttpKernel] Arrays with scalar values passed to ESI fragment renderer throw deprecation notice [HttpKernel] add a test for FilterControllerEvents
393 lines
14 KiB
Markdown
393 lines
14 KiB
Markdown
UPGRADE FROM 3.2 to 3.3
|
|
=======================
|
|
|
|
BrowserKit
|
|
----------
|
|
|
|
* The request method is dropped from POST to GET when the response
|
|
status code is 301.
|
|
|
|
ClassLoader
|
|
-----------
|
|
|
|
* The component is deprecated and will be removed in 4.0. Use Composer instead.
|
|
|
|
Console
|
|
-------
|
|
|
|
* `Input::getOption()` no longer returns the default value for options
|
|
with value optional explicitly passed empty.
|
|
|
|
For:
|
|
|
|
```php
|
|
protected function configure()
|
|
{
|
|
$this
|
|
// ...
|
|
->setName('command')
|
|
->addOption('foo', null, InputOption::VALUE_OPTIONAL, '', 'default')
|
|
;
|
|
}
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
var_dump($input->getOption('foo'));
|
|
}
|
|
```
|
|
|
|
Before:
|
|
|
|
```
|
|
$ php console.php command
|
|
"default"
|
|
|
|
$ php console.php command --foo
|
|
"default"
|
|
|
|
$ php console.php command --foo ""
|
|
"default"
|
|
|
|
$ php console.php command --foo=
|
|
"default"
|
|
```
|
|
|
|
After:
|
|
|
|
```
|
|
$ php console.php command
|
|
"default"
|
|
|
|
$ php console.php command --foo
|
|
NULL
|
|
|
|
$ php console.php command --foo ""
|
|
""
|
|
|
|
$ php console.php command --foo=
|
|
""
|
|
```
|
|
|
|
* The `console.exception` event and the related `ConsoleExceptionEvent` class
|
|
have been deprecated in favor of the `console.error` event and the `ConsoleErrorEvent`
|
|
class. The deprecated event and class will be removed in 4.0.
|
|
|
|
* The `SymfonyQuestionHelper::ask` default validation has been deprecated and will be removed in 4.0. Apply validation using `Question::setValidator` instead.
|
|
|
|
Debug
|
|
-----
|
|
|
|
* The `ContextErrorException` class is deprecated. `\ErrorException` will be used instead in 4.0.
|
|
|
|
DependencyInjection
|
|
-------------------
|
|
|
|
* Autowiring services based on the types they implement is deprecated and won't be supported in version 4.0. Rename (or alias) your services to their FQCN id to make them autowirable.
|
|
|
|
* The `NullDumper` class has been made final
|
|
|
|
* [BC BREAK] `_defaults` and `_instanceof` are now reserved service names in Yaml configurations. Please rename any services with that names.
|
|
|
|
* [BC BREAK] non-numeric keys in methods and constructors arguments have never been supported and are now forbidden. Please remove them if you happen to have one.
|
|
|
|
* Service names that start with an underscore are deprecated in Yaml files and will be reserved in 4.0. Please rename any services with such names.
|
|
|
|
* Autowiring-types have been deprecated, use aliases instead.
|
|
|
|
Before:
|
|
|
|
```xml
|
|
<service id="annotations.reader" class="Doctrine\Common\Annotations\AnnotationReader" public="false">
|
|
<autowiring-type>Doctrine\Common\Annotations\Reader</autowiring-type>
|
|
</service>
|
|
```
|
|
|
|
After:
|
|
|
|
```xml
|
|
<service id="annotations.reader" class="Doctrine\Common\Annotations\AnnotationReader" public="false" />
|
|
<service id="Doctrine\Common\Annotations\Reader" alias="annotations.reader" public="false" />
|
|
```
|
|
|
|
* The `Reference` and `Alias` classes do not make service identifiers lowercase anymore.
|
|
|
|
* Case insensitivity of service identifiers is deprecated and will be removed in 4.0.
|
|
|
|
* Using the `PhpDumper` with an uncompiled `ContainerBuilder` is deprecated and
|
|
will not be supported anymore in 4.0.
|
|
|
|
* Extending the containers generated by `PhpDumper` is deprecated and won't be
|
|
supported in 4.0.
|
|
|
|
* The `DefinitionDecorator` class is deprecated and will be removed in 4.0, use
|
|
the `ChildDefinition` class instead.
|
|
|
|
* The ``strict`` attribute in service arguments has been deprecated and will be removed in 4.0.
|
|
The attribute is ignored since 3.0, so you can simply remove it.
|
|
|
|
EventDispatcher
|
|
---------------
|
|
|
|
* The `ContainerAwareEventDispatcher` class has been deprecated.
|
|
Use `EventDispatcher` with closure factories instead.
|
|
|
|
Finder
|
|
------
|
|
|
|
* The `ExceptionInterface` has been deprecated and will be removed in 4.0.
|
|
|
|
Form
|
|
----
|
|
|
|
* Using the "choices" option in ``CountryType``, ``CurrencyType``, ``LanguageType``,
|
|
``LocaleType``, and ``TimezoneType`` without overriding the ``choice_loader``
|
|
option has been deprecated and will be ignored in 4.0.
|
|
|
|
Before:
|
|
```php
|
|
$builder->add('custom_locales', LocaleType::class, array(
|
|
'choices' => $availableLocales,
|
|
));
|
|
```
|
|
|
|
After:
|
|
```php
|
|
$builder->add('custom_locales', LocaleType::class, array(
|
|
'choices' => $availableLocales,
|
|
'choice_loader' => null,
|
|
));
|
|
// or
|
|
$builder->add('custom_locales', LocaleType::class, array(
|
|
'choice_loader' => new CallbackChoiceLoader(function () {
|
|
return $this->getAvailableLocales();
|
|
}),
|
|
));
|
|
```
|
|
|
|
FrameworkBundle
|
|
---------------
|
|
|
|
* [BC BREAK] The "framework.trusted_proxies" configuration option and the corresponding "kernel.trusted_proxies"
|
|
parameter have been removed. Use the Request::setTrustedProxies() method in your front controller instead.
|
|
|
|
* Not defining the `type` option of the `framework.workflows.*` configuration entries is deprecated.
|
|
The default value will be `state_machine` in Symfony 4.0.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CompilerDebugDumpPass` has been deprecated.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass` has been deprecated.
|
|
Use `Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass` instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass` class has been
|
|
deprecated and will be removed in 4.0.
|
|
Use the `Symfony\Component\Serializer\DependencyInjection\SerializerPass` class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\FormPass` class has been
|
|
deprecated and will be removed in 4.0. Use the `Symfony\Component\Form\DependencyInjection\FormPass`
|
|
class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\EventListener\SessionListener` class has been
|
|
deprecated and will be removed in 4.0. Use the `Symfony\Component\HttpKernel\EventListener\SessionListener`
|
|
class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener` class has been
|
|
deprecated and will be removed in 4.0. Use the `Symfony\Component\HttpKernel\EventListener\TestSessionListener`
|
|
class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigCachePass` class has been
|
|
deprecated and will be removed in 4.0. Use `Symfony\Component\Config\DependencyInjection\ConfigCachePass`
|
|
class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\PropertyInfoPass` class has been
|
|
deprecated and will be removed in 4.0. Use the `Symfony\Component\PropertyInfo\DependencyInjection\PropertyInfoPass`
|
|
class instead.
|
|
|
|
* Class parameters related to routing have been deprecated and will be removed in 4.0.
|
|
* router.options.generator_class
|
|
* router.options.generator_base_class
|
|
* router.options.generator_dumper_class
|
|
* router.options.matcher_class
|
|
* router.options.matcher_base_class
|
|
* router.options.matcher_dumper_class
|
|
* router.options.matcher.cache_class
|
|
* router.options.generator.cache_class
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ControllerArgumentValueResolverPass` class
|
|
has been deprecated and will be removed in 4.0. Use the `Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass`
|
|
class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RoutingResolverPass`
|
|
class has been deprecated and will be removed in 4.0. Use the
|
|
`Symfony\Component\Routing\DependencyInjection\RoutingResolverPass` class instead.
|
|
|
|
* The `server:run`, `server:start`, `server:stop` and
|
|
`server:status` console commands have been moved to a dedicated bundle.
|
|
Require `symfony/web-server-bundle` in your composer.json and register
|
|
`Symfony\Bundle\WebServerBundle\WebServerBundle` in your AppKernel to use them.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\Translation\Translator` constructor now takes the
|
|
default locale as 3rd argument. Not passing it will trigger an error in 4.0.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddValidatorInitializersPass`
|
|
class has been deprecated and will be removed in 4.0.
|
|
Use the `Symfony\Component\Validator\DependencyInjection\AddValidatorInitializersPass` class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass`
|
|
class has been deprecated and will be removed in 4.0.
|
|
Use the `Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass` class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ValidateWorkflowsPass`
|
|
class has been deprecated and will be removed in 4.0. Use the
|
|
`Symfony\Component\Workflow\DependencyInjection\ValidateWorkflowsPass` class instead.
|
|
|
|
* The `Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory`
|
|
class has been deprecated and will be removed in 4.0.
|
|
Use `Symfony\Component\Validator\ContainerConstraintValidatorFactory` instead.
|
|
|
|
HttpFoundation
|
|
--------------
|
|
|
|
* [BC BREAK] The `Request::setTrustedProxies()` method takes a new `$trustedHeaderSet` argument.
|
|
See http://symfony.com/doc/current/components/http_foundation/trusting_proxies.html for more info.
|
|
|
|
* The `Request::setTrustedHeaderName()` and `Request::getTrustedHeaderName()` methods are deprecated,
|
|
use the RFC7239 `Forwarded` header, or the `X-Forwarded-*` headers instead.
|
|
|
|
HttpKernel
|
|
-----------
|
|
|
|
* The `Extension::addClassesToCompile()` and `Extension::getClassesToCompile()` methods have been deprecated and will be removed in 4.0.
|
|
|
|
* The `Psr6CacheClearer::addPool()` method has been deprecated. Pass an array
|
|
of pools indexed by name to the constructor instead.
|
|
|
|
* The `LazyLoadingFragmentHandler::addRendererService()` method has been
|
|
deprecated and will be removed in 4.0.
|
|
|
|
* The `X-Status-Code` header method of setting a custom status code in the
|
|
response when handling exceptions has been removed. There is now a new
|
|
`GetResponseForExceptionEvent::allowCustomResponseCode()` method instead,
|
|
which will tell the Kernel to use the response code set on the event's
|
|
response object.
|
|
|
|
* The `Kernel::getEnvParameters()` method has been deprecated and will be
|
|
removed in 4.0.
|
|
|
|
* The `SYMFONY__` environment variables have been deprecated and they will be
|
|
no longer processed automatically by Symfony in 4.0. Use the `%env()%` syntax
|
|
to get the value of any environment variable from configuration files instead.
|
|
|
|
Process
|
|
-------
|
|
|
|
* The `ProcessUtils::escapeArgument()` method has been deprecated, use a command line array or give env vars to the `Process::start/run()` method instead.
|
|
|
|
* Not inheriting environment variables is deprecated.
|
|
|
|
* Configuring `proc_open()` options is deprecated.
|
|
|
|
* Configuring Windows and sigchild compatibility is deprecated - they will be always enabled in 4.0.
|
|
|
|
* Extending `Process::run()`, `Process::mustRun()` and `Process::restart()` is
|
|
deprecated and won't be supported in 4.0.
|
|
|
|
ProxyManager
|
|
------------
|
|
|
|
* [BC BREAK] The `ProxyDumper` class has been made final
|
|
|
|
Security
|
|
--------
|
|
|
|
* The `RoleInterface` has been deprecated. Extend the `Symfony\Component\Security\Core\Role\Role`
|
|
class in your custom role implementations instead.
|
|
|
|
* The `LogoutUrlGenerator::registerListener()` method will expect a 6th `string $context = null` argument in 4.0.
|
|
Define the argument when overriding this method.
|
|
|
|
* The `AccessDecisionManager::setVoters()` method has been deprecated. Pass
|
|
the voters to the constructor instead.
|
|
|
|
SecurityBundle
|
|
--------------
|
|
|
|
* The `FirewallContext::getContext()` method has been deprecated and will be removed in 4.0.
|
|
Use the `getListeners()` and/or `getExceptionListener()` method instead.
|
|
|
|
* The `FirewallMap::$map` and `$container` properties have been deprecated and will be removed in 4.0.
|
|
|
|
* The `UserPasswordEncoderCommand` command expects to be registered as a service and its
|
|
constructor arguments fully provided.
|
|
Registering by convention the command or commands extending it is deprecated and will
|
|
not be allowed anymore in 4.0.
|
|
|
|
* `UserPasswordEncoderCommand::getContainer()` is deprecated, and this class won't
|
|
extend `ContainerAwareCommand` nor implement `ContainerAwareInterface` anymore in 4.0.
|
|
|
|
* [BC BREAK] Keys of the `users` node for `in_memory` user provider are no longer normalized.
|
|
|
|
Serializer
|
|
----------
|
|
|
|
* Extending `ChainDecoder`, `ChainEncoder`, `ArrayDenormalizer` is deprecated
|
|
and won't be supported in 4.0.
|
|
|
|
TwigBridge
|
|
----------
|
|
|
|
* The `TwigRendererEngine::setEnvironment()` method has been deprecated and will be removed
|
|
in 4.0. Pass the Twig Environment as second argument of the constructor instead.
|
|
|
|
TwigBundle
|
|
----------
|
|
|
|
* The `ContainerAwareRuntimeLoader` class has been deprecated and will be removed in 4.0.
|
|
Use the Twig `Twig_ContainerRuntimeLoader` class instead.
|
|
|
|
Workflow
|
|
--------
|
|
|
|
* Deprecated class name support in `WorkflowRegistry::add()` as second parameter.
|
|
Wrap the class name in an instance of ClassInstanceSupportStrategy instead.
|
|
|
|
Yaml
|
|
----
|
|
|
|
* Starting an unquoted string with a question mark followed by a space is
|
|
deprecated and will throw a `ParseException` in Symfony 4.0.
|
|
|
|
* Deprecated support for implicitly parsing non-string mapping keys as strings.
|
|
Mapping keys that are no strings will lead to a `ParseException` in Symfony
|
|
4.0. Use quotes to opt-in for keys to be parsed as strings.
|
|
|
|
Before:
|
|
|
|
```php
|
|
$yaml = <<<YAML
|
|
null: null key
|
|
true: boolean true
|
|
2.0: float key
|
|
YAML;
|
|
|
|
Yaml::parse($yaml);
|
|
```
|
|
|
|
After:
|
|
|
|
```php
|
|
|
|
$yaml = <<<YAML
|
|
"null": null key
|
|
"true": boolean true
|
|
"2.0": float key
|
|
YAML;
|
|
|
|
Yaml::parse($yaml);
|
|
```
|
|
|
|
* Omitting the key of a mapping is deprecated and will throw a `ParseException` in Symfony 4.0.
|
|
|
|
* The constructor arguments `$offset`, `$totalNumberOfLines` and
|
|
`$skippedLineNumbers` of the `Parser` class are deprecated and will be
|
|
removed in 4.0
|