2016-01-27 23:13:26 +00:00
UPGRADE FROM 3.x to 4.0
=======================
2016-12-06 10:28:32 +00:00
ClassLoader
-----------
2017-01-20 09:53:58 +00:00
* The component has been removed. Use Composer instead.
2016-12-06 10:28:32 +00:00
2016-09-21 15:11:45 +01:00
Console
-------
* Setting unknown style options is not supported anymore and throws an
exception.
2017-03-05 12:22:56 +00:00
* The `QuestionHelper::setInputStream()` method is removed. Use
`StreamableInputInterface::setStream()` or `CommandTester::setInputs()`
instead.
Before:
```php
$input = new ArrayInput();
$questionHelper->setInputStream($stream);
$questionHelper->ask($input, $output, $question);
```
After:
```php
$input = new ArrayInput();
$input->setStream($stream);
$questionHelper->ask($input, $output, $question);
```
Before:
```php
$commandTester = new CommandTester($command);
$stream = fopen('php://memory', 'r+', false);
fputs($stream, "AppBundle\nYes");
rewind($stream);
$command->getHelper('question')->setInputStream($stream);
$commandTester->execute();
```
After:
```php
$commandTester = new CommandTester($command);
$commandTester->setInputs(array('AppBundle', 'Yes'));
$commandTester->execute();
```
2016-09-21 15:11:45 +01:00
2016-01-18 16:12:22 +00:00
* The `console.exception` event and the related `ConsoleExceptionEvent` class have
been removed in favor of the `console.error` event and the `ConsoleErrorEvent` class.
2017-07-20 18:25:39 +01:00
* The `SymfonyQuestionHelper::ask` default validation has been removed in favor of `Question::setValidator` .
2016-06-16 07:59:21 +01:00
Debug
-----
2017-01-24 09:54:11 +00:00
* The `ContextErrorException` class has been removed. Use `\ErrorException` instead.
2016-06-16 07:59:21 +01:00
* `FlattenException::getTrace()` now returns additional type descriptions
`integer` and `float` .
2017-05-21 16:02:52 +01:00
* Support for stacked errors in the `ErrorHandler` has been removed
2016-01-27 23:13:26 +00:00
DependencyInjection
-------------------
2017-08-03 10:15:05 +01:00
* Relying on service auto-registration while autowiring is not supported anymore.
2017-07-29 14:29:10 +01:00
Explicitly inject your dependencies or create services whose ids are
their fully-qualified class name.
Before:
```php
namespace App\Controller;
use App\Mailer;
class DefaultController
{
public function __construct(Mailer $mailer) {
// ...
}
// ...
}
```
```yml
services:
App\Controller\DefaultController:
autowire: true
```
After:
```php
// same PHP code
```
```yml
services:
App\Controller\DefaultController:
autowire: true
# or
# App\Controller\DefaultController:
# arguments: { $mailer: "@App\Mailer" }
App\Mailer:
autowire: true
2017-08-03 10:15:05 +01:00
```
2017-07-29 14:29:10 +01:00
2017-04-11 22:05:55 +01:00
* Autowiring services based on the types they implement is not supported anymore. Rename (or alias) your services to their FQCN id to make them autowirable.
2017-04-04 18:35:51 +01:00
2017-03-27 18:51:07 +01:00
* `_defaults` and `_instanceof` are now reserved service names in Yaml configurations. Please rename any services with that names.
* 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 now reserved in Yaml files. Please rename any services with such names.
2017-02-01 11:51:46 +00:00
* Autowiring-types have been removed, 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" />
```
2017-09-04 15:58:03 +01:00
* Service identifiers and parameter names are now case sensitive.
2017-01-10 07:04:52 +00:00
* The `Reference` and `Alias` classes do not make service identifiers lowercase anymore.
2016-12-19 09:27:55 +00:00
* Using the `PhpDumper` with an uncompiled `ContainerBuilder` is not supported
anymore.
2017-02-17 18:49:55 +00:00
* Extending the containers generated by `PhpDumper` is not supported
anymore.
2016-11-28 07:50:06 +00:00
* The `DefinitionDecorator` class has been removed. Use the `ChildDefinition`
class instead.
2017-09-07 09:34:20 +01:00
* The `ResolveDefinitionTemplatesPass` class has been removed.
Use the `ResolveChildDefinitionsPass` class instead.
2016-01-27 23:13:26 +00:00
* Using unsupported configuration keys in YAML configuration files raises an
exception.
* Using unsupported options to configure service aliases raises an exception.
2017-08-07 17:03:37 +01:00
* Setting or unsetting a service with the `Container::set()` method is
no longer supported. Only synthetic services can be set or unset.
2016-06-22 21:01:50 +01:00
* Checking the existence of a private service with the `Container::has()`
method is no longer supported and will return `false` .
* Requesting a private service with the `Container::get()` method is no longer
supported.
2017-02-18 17:21:29 +00:00
* The ``strict`` attribute in service arguments has been removed.
The attribute is ignored since 3.0, so you can simply remove it.
2017-05-25 07:46:02 +01:00
* Top-level anonymous services in XML are no longer supported.
2016-12-15 15:32:21 +00:00
EventDispatcher
---------------
* The `ContainerAwareEventDispatcher` class has been removed.
2017-06-01 21:30:09 +01:00
Use `EventDispatcher` with closure factories instead.
2016-12-15 15:32:21 +00:00
2016-08-26 08:29:50 +01:00
ExpressionLanguage
2016-12-23 20:50:34 +00:00
------------------
2016-08-26 08:29:50 +01:00
* The ability to pass a `ParserCacheInterface` instance to the `ExpressionLanguage`
class has been removed. You should use the `CacheItemPoolInterface` interface
instead.
2017-07-31 08:31:57 +01:00
Filesystem
----------
* The `Symfony\Component\Filesystem\LockHandler` has been removed,
use the `Symfony\Component\Lock\Store\FlockStore` class
or the `Symfony\Component\Lock\Store\FlockStore\SemaphoreStore` class directly instead.
2016-12-12 20:19:41 +00:00
Finder
------
* The `ExceptionInterface` has been removed.
2017-05-21 13:08:16 +01:00
* The `Symfony\Component\Finder\Iterator\FilterIterator` class has been
removed as it used to fix a bug which existed before version 5.5.23/5.6.7
2016-12-12 20:19:41 +00:00
2016-01-27 23:13:26 +00:00
Form
----
* The `choices_as_values` option of the `ChoiceType` has been removed.
2016-03-29 09:52:53 +01:00
2016-02-18 14:03:27 +00:00
* Support for data objects that implements both `Traversable` and
2016-04-01 02:30:15 +01:00
`ArrayAccess` in `ResizeFormListener::preSubmit` method has been removed.
2016-04-25 18:10:03 +01:00
* Using callable strings as choice options in ChoiceType is not supported
2016-03-05 09:39:42 +00:00
anymore in favor of passing PropertyPath instances.
2016-04-25 18:10:03 +01:00
2016-03-05 09:39:42 +00:00
Before:
2016-04-25 18:10:03 +01:00
2016-03-05 09:39:42 +00:00
```php
'choice_value' => new PropertyPath('range'),
'choice_label' => 'strtoupper',
```
2016-04-25 18:10:03 +01:00
2016-03-05 09:39:42 +00:00
After:
2016-04-25 18:10:03 +01:00
2016-03-05 09:39:42 +00:00
```php
'choice_value' => 'range',
'choice_label' => function ($choice) {
return strtoupper($choice);
},
```
2016-04-25 18:10:03 +01:00
2016-04-28 12:31:04 +01:00
* Caching of the loaded `ChoiceListInterface` in the `LazyChoiceList` has been removed,
it must be cached in the `ChoiceLoaderInterface` implementation instead.
2016-01-27 23:13:26 +00:00
2016-02-01 19:26:57 +00:00
* Calling `isValid()` on a `Form` instance before submitting it is not supported
anymore and raises an exception.
Before:
```php
if ($form->isValid()) {
// ...
}
```
After:
```php
if ($form->isSubmitted() & & $form->isValid()) {
// ...
}
```
2017-03-07 23:52:41 +00:00
* Using the "choices" option in ``CountryType``, ``CurrencyType``, ``LanguageType``,
``LocaleType``, and ``TimezoneType`` without overriding the ``choice_loader``
option is now ignored.
2017-04-13 10:10:44 +01:00
2017-03-07 23:52:41 +00:00
Before:
```php
$builder->add('custom_locales', LocaleType::class, array(
'choices' => $availableLocales,
));
```
2017-04-13 10:10:44 +01:00
2017-03-07 23:52:41 +00:00
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();
}),
));
```
2016-04-01 02:30:15 +01:00
FrameworkBundle
---------------
2017-06-11 01:54:55 +01:00
* The `validator.mapping.cache.doctrine.apc` service has been removed.
2017-02-12 11:31:06 +00:00
* 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.
2017-04-13 10:10:44 +01:00
* The default value of the `framework.workflows.[name].type` configuration options is now `state_machine` .
2016-04-01 02:30:15 +01:00
* Support for absolute template paths has been removed.
* The following form types registered as services have been removed; use their
fully-qualified class name instead:
2016-03-29 09:52:53 +01:00
- `"form.type.birthday"`
- `"form.type.checkbox"`
- `"form.type.collection"`
- `"form.type.country"`
- `"form.type.currency"`
- `"form.type.date"`
- `"form.type.datetime"`
- `"form.type.email"`
- `"form.type.file"`
- `"form.type.hidden"`
- `"form.type.integer"`
- `"form.type.language"`
- `"form.type.locale"`
- `"form.type.money"`
- `"form.type.number"`
- `"form.type.password"`
- `"form.type.percent"`
- `"form.type.radio"`
- `"form.type.range"`
- `"form.type.repeated"`
- `"form.type.search"`
- `"form.type.textarea"`
- `"form.type.text"`
- `"form.type.time"`
- `"form.type.timezone"`
- `"form.type.url"`
- `"form.type.button"`
- `"form.type.submit"`
- `"form.type.reset"`
2016-06-29 20:45:06 +01:00
* The `framework.serializer.cache` option and the services
`serializer.mapping.cache.apc` and `serializer.mapping.cache.doctrine.apc`
have been removed. APCu should now be automatically used when available.
2017-01-18 14:08:35 +00:00
2017-04-06 16:51:47 +01:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CompilerDebugDumpPass` has been removed.
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass` has been removed.
Use `Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass` instead.
2016-08-08 14:40:30 +01:00
2017-02-17 18:49:55 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass` class has been removed.
2017-01-14 18:54:56 +00:00
Use the `Symfony\Component\Serializer\DependencyInjection\SerializerPass` class instead.
2017-01-13 19:57:15 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\FormPass` class has been
removed. Use the `Symfony\Component\Form\DependencyInjection\FormPass` class instead.
2017-02-14 19:09:41 +00:00
* The `Symfony\Bundle\FrameworkBundle\EventListener\SessionListener` class has been removed.
Use the `Symfony\Component\HttpKernel\EventListener\SessionListener` class instead.
* The `Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener` class has been
removed. Use the `Symfony\Component\HttpKernel\EventListener\TestSessionListener`
class instead.
2017-01-22 22:45:08 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigCachePass` class has been removed.
Use `Symfony\Component\Config\DependencyInjection\ConfigCachePass` class instead.
2017-02-20 18:49:52 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\PropertyInfoPass` class has been
removed. Use the `Symfony\Component\PropertyInfo\DependencyInjection\PropertyInfoPass`
class instead.
2017-01-22 22:45:08 +00:00
2017-03-01 18:51:55 +00:00
* Class parameters related to routing have been removed
* 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
2017-02-21 21:38:27 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ControllerArgumentValueResolverPass` class
has been removed. Use the `Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass`
class instead.
2017-02-20 19:19:16 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RoutingResolverPass`
2017-03-06 09:41:30 +00:00
class has been removed. Use the
2017-02-20 19:19:16 +00:00
`Symfony\Component\Routing\DependencyInjection\RoutingResolverPass` class instead.
2017-03-15 15:59:02 +00:00
* The `Symfony\Bundle\FrameworkBundle\Translation\Translator` constructor now takes the
default locale as mandatory 3rd argument.
2017-02-22 23:37:05 +00:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddValidatorInitializersPass` class has been
removed. Use the `Symfony\Component\Validator\DependencyInjection\AddValidatorInitializersPass`
class instead.
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConstraintValidatorsPass` class has been
removed. Use the `Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass`
class instead.
2016-08-25 13:14:47 +01:00
2017-04-06 09:44:15 +01:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ValidateWorkflowsPass` class
has been removed. Use the `Symfony\Component\Workflow\DependencyInjection\ValidateWorkflowsPass`
class instead.
2017-07-23 13:40:01 +01:00
2017-05-09 08:19:29 +01:00
* Using the `KERNEL_DIR` environment variable and the automatic guessing based
2017-07-29 14:29:10 +01:00
on the `phpunit.xml` file location have been removed from the `KernelTestCase::getKernelClass()`
2017-05-09 08:19:29 +01:00
method implementation. Set the `KERNEL_CLASS` environment variable to the
2017-07-29 14:29:10 +01:00
fully-qualified class name of your Kernel or override the `KernelTestCase::createKernel()`
2017-05-09 08:19:29 +01:00
or `KernelTestCase::getKernelClass()` method instead.
2017-04-06 09:44:15 +01:00
2017-09-04 15:58:03 +01:00
* The methods `KernelTestCase::getPhpUnitXmlDir()` and `KernelTestCase::getPhpUnitCliConfigArgument()`
have been removed.
2017-05-27 11:21:10 +01:00
* The `Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory` class has been removed.
2017-05-25 09:01:20 +01:00
Use `Symfony\Component\Validator\ContainerConstraintValidatorFactory` instead.
2017-04-06 09:44:15 +01:00
2017-06-13 10:38:29 +01:00
* The `--no-prefix` option of the `translation:update` command has
been removed.
2017-07-29 14:29:10 +01:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheClearerPass` class has been removed.
2017-05-03 13:00:53 +01:00
Use the `Symfony\Component\HttpKernel\DependencyInjection\AddCacheClearerPass` class instead.
2017-07-29 14:29:10 +01:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddCacheWarmerPass` class has been removed.
2017-05-03 13:00:53 +01:00
Use the `Symfony\Component\HttpKernel\DependencyInjection\AddCacheWarmerPass` class instead.
2017-05-05 11:35:04 +01:00
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationDumperPass`
class has been removed. Use the
`Symfony\Component\Translation\DependencyInjection\TranslationDumperPass` class instead.
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationExtractorPass`
class has been removed. Use the
`Symfony\Component\Translation\DependencyInjection\TranslationExtractorPass` class instead.
* The `Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslatorPass`
class has been removed. Use the
`Symfony\Component\Translation\DependencyInjection\TranslatorPass` class instead.
2017-07-25 19:07:39 +01:00
* The `Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader`
class has been deprecated and will be removed in 4.0. Use the
`Symfony\Component\Translation\Reader\TranslationReader` class instead.
2017-05-05 11:35:04 +01:00
2017-08-12 11:12:58 +01:00
* The `translation.loader` service has been removed.
Use the `translation.reader` service instead.
2017-07-25 19:07:39 +01:00
2017-08-12 11:12:58 +01:00
* `AssetsInstallCommand::__construct()` now requires an instance of
`Symfony\Component\Filesystem\Filesystem` as first argument.
* `CacheClearCommand::__construct()` now requires an instance of
`Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface` as
first argument.
* `CachePoolClearCommand::__construct()` now requires an instance of
`Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer` as
first argument.
* `EventDispatcherDebugCommand::__construct()` now requires an instance of
`Symfony\Component\EventDispatcher\EventDispatcherInterface` as
first argument.
* `RouterDebugCommand::__construct()` now requires an instance of
`Symfony\Component\Routing\RouterInteface` as
first argument.
* `RouterMatchCommand::__construct()` now requires an instance of
`Symfony\Component\Routing\RouterInteface` as
first argument.
* `TranslationDebugCommand::__construct()` now requires an instance of
`Symfony\Component\Translation\TranslatorInterface` as
first argument.
* `TranslationUpdateCommand::__construct()` now requires an instance of
`Symfony\Component\Translation\TranslatorInterface` as
first argument.
2017-02-12 11:31:06 +00:00
HttpFoundation
--------------
* The `Request::setTrustedProxies()` method takes a new `$trustedHeaderSet` argument.
2017-04-01 11:53:29 +01:00
See http://symfony.com/doc/current/components/http_foundation/trusting_proxies.html for more info.
2017-02-12 11:31:06 +00:00
* The `Request::setTrustedHeaderName()` and `Request::getTrustedHeaderName()` methods have been removed.
2016-08-25 13:14:47 +01:00
* Extending the following methods of `Response`
is no longer possible (these methods are now `final` ):
- `setDate` /`getDate`
- `setExpires` /`getExpires`
- `setLastModified` /`getLastModified`
- `setProtocolVersion` /`getProtocolVersion`
- `setStatusCode` /`getStatusCode`
- `setCharset` /`getCharset`
- `setPrivate` /`setPublic`
- `getAge`
- `getMaxAge` /`setMaxAge`
- `setSharedMaxAge`
- `getTtl` /`setTtl`
- `setClientTtl`
- `getEtag` /`setEtag`
- `hasVary` /`getVary`/`setVary`
- `isInvalid` /`isSuccessful`/`isRedirection`/`isClientError`/`isServerError`
- `isOk` /`isForbidden`/`isNotFound`/`isRedirect`/`isEmpty`
2016-12-19 22:28:29 +00:00
* The ability to check only for cacheable HTTP methods using `Request::isMethodSafe()` is
not supported anymore, use `Request::isMethodCacheable()` instead.
2016-02-10 16:55:01 +00:00
HttpKernel
----------
2017-08-06 13:15:02 +01:00
* Relying on convention-based commands discovery is not supported anymore.
Use PSR-4 based service discovery instead.
Before:
```yml
# app/config/services.yml
services:
# ...
# implicit registration of all commands in the `Command` folder
```
After:
```yml
# app/config/services.yml
services:
# ...
# explicit commands registration
AppBundle\Command:
resource: '../../src/AppBundle/Command/*'
tags: ['console.command']
```
2017-04-20 14:57:24 +01:00
* Removed the `kernel.root_dir` parameter. Use the `kernel.project_dir` parameter
instead.
* Removed the `Kernel::getRootDir()` method. Use the `Kernel::getProjectDir()`
method instead.
2017-05-24 09:44:44 +01:00
* The `Extension::addClassesToCompile()` and `Extension::getClassesToCompile()` methods have been removed.
2017-04-17 20:24:29 +01:00
2016-07-04 12:11:13 +01:00
* Possibility to pass non-scalar values as URI attributes to the ESI and SSI
renderers has been removed. The inline fragment renderer should be used with
non-scalar attributes.
2016-02-10 16:55:01 +00:00
2016-04-09 19:18:57 +01:00
* The `ControllerResolver::getArguments()` method has been removed. If you
have your own `ControllerResolverInterface` implementation, you should
inject an `ArgumentResolverInterface` instance.
2016-08-14 14:24:11 +01:00
* The `DataCollector::varToString()` method has been removed in favor of `cloneVar()` .
2016-12-07 19:11:50 +00:00
* The `Psr6CacheClearer::addPool()` method has been removed. Pass an array of pools indexed
by name to the constructor instead.
2017-02-23 11:19:48 +00:00
2017-02-14 19:09:41 +00:00
* The `LazyLoadingFragmentHandler::addRendererService()` method has been removed.
2016-12-07 19:11:50 +00:00
2017-03-01 06:52:11 +00:00
* 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.
2017-03-06 09:41:30 +00:00
* The `Kernel::getEnvParameters()` method has been removed.
* The `SYMFONY__` environment variables are no longer processed automatically
by Symfony. Use the `%env()%` syntax to get the value of any environment
variable from configuration files instead.
2017-08-04 13:41:57 +01:00
* The `getCacheDir()` method of your kernel should not be called while building the container.
Use the `%kernel.cache_dir%` parameter instead. Not doing so may break the `cache:clear` command.
2017-09-01 19:06:13 +01:00
* The `Symfony\Component\HttpKernel\Config\EnvParametersResource` class has been removed.
2017-02-23 11:35:33 +00:00
Ldap
----
2017-07-06 08:01:40 +01:00
* The `RenameEntryInterface` has been removed, and merged with `EntryManagerInterface`
2017-02-23 11:35:33 +00:00
2017-01-31 09:03:29 +00:00
Process
-------
2017-07-28 22:09:12 +01:00
* Passing a not existing working directory to the constructor of the `Symfony\Component\Process\Process` class is not supported anymore.
2017-06-08 19:25:37 +01:00
* The `Symfony\Component\Process\ProcessBuilder` class has been removed,
use the `Symfony\Component\Process\Process` class directly instead.
2017-01-12 17:50:31 +00:00
* The `ProcessUtils::escapeArgument()` method has been removed, use a command line array or give env vars to the `Process::start/run()` method instead.
2017-01-31 09:03:29 +00:00
* Environment variables are always inherited in sub-processes.
* Configuring `proc_open()` options has been removed.
* Configuring Windows and sigchild compatibility is not possible anymore - they are always enabled.
2017-02-17 18:49:55 +00:00
* Extending `Process::run()` , `Process::mustRun()` and `Process::restart()` is
not supported anymore.
2017-09-04 15:58:03 +01:00
* The `getEnhanceWindowsCompatibility()` and `setEnhanceWindowsCompatibility()` methods of the `Process` class have been removed.
2017-09-11 18:47:15 +01:00
Profiler
--------
* The `profiler.matcher` option has been removed.
2017-05-24 16:30:25 +01:00
ProxyManager
------------
* The `ProxyDumper` class has been made final
2016-11-28 07:59:03 +00:00
Security
--------
* The `RoleInterface` has been removed. Extend the `Symfony\Component\Security\Core\Role\Role`
class instead.
2017-04-13 10:10:44 +01:00
2017-05-18 18:20:35 +01:00
* The `LogoutUrlGenerator::registerListener()` method expects a 6th `string $context = null` argument.
2016-11-28 07:59:03 +00:00
2017-04-04 20:45:53 +01:00
* The `AccessDecisionManager::setVoters()` method has been removed. Pass the
voters to the constructor instead.
2017-03-01 15:05:29 +00:00
2017-09-04 15:58:03 +01:00
* Support for defining voters that don't implement the `VoterInterface` has been removed.
2017-02-23 11:35:33 +00:00
SecurityBundle
--------------
2017-04-19 18:30:56 +01:00
* The `FirewallContext::getContext()` method has been removed, use the `getListeners()` and/or `getExceptionListener()` method instead.
2017-02-23 11:35:33 +00:00
* The `FirewallMap::$map` and `$container` properties have been removed.
* The `UserPasswordEncoderCommand` class does not allow `null` as the first argument anymore.
2017-07-15 13:52:50 +01:00
* `UserPasswordEncoderCommand` does not extend `ContainerAwareCommand` nor implement `ContainerAwareInterface` anymore.
2017-02-23 11:35:33 +00:00
2017-08-12 11:12:58 +01:00
* `InitAclCommand::__construct()` now requires an instance of
`Doctrine\DBAL\Connection` as first argument.
* `SetAclCommand::__construct()` now requires an instance of
`Symfony\Component\Security\Acl\Model\MutableAclProviderInterfaceConnection`
as first argument.
2016-01-27 23:13:26 +00:00
Serializer
----------
* The ability to pass a Doctrine `Cache` instance to the `ClassMetadataFactory`
class has been removed. You should use the `CacheClassMetadataFactory` class
instead.
2017-01-18 14:08:35 +00:00
2016-11-30 08:01:12 +00:00
* Not defining the 6th argument `$format = null` of the
`AbstractNormalizer::instantiateObject()` method when overriding it is not
supported anymore.
2016-01-27 23:13:26 +00:00
2017-02-17 18:49:55 +00:00
* Extending `ChainDecoder` , `ChainEncoder` , `ArrayDenormalizer` is not supported
anymore.
2016-03-24 09:23:20 +00:00
Translation
-----------
* Removed the backup feature from the file dumper classes.
2017-07-25 18:57:30 +01:00
2017-07-25 19:07:39 +01:00
* The default value of the `$readerServiceId` argument of `TranslatorPass::__construct()` has been changed to `"translation.reader"` .
2017-07-25 18:57:30 +01:00
* Removed `Symfony\Component\Translation\Writer\TranslationWriter::writeTranslations` ,
use `Symfony\Component\Translation\Writer\TranslationWriter::write` instead.
2016-03-24 09:23:20 +00:00
2016-09-18 09:17:44 +01:00
* Removed support for passing `Symfony\Component\Translation\MessageSelector` as a second argument to the
`Translator::__construct()` . You should pass an instance of `Symfony\Component\Translation\Formatter\MessageFormatterInterface` instead.
2017-02-14 19:09:41 +00:00
TwigBundle
----------
2017-02-23 11:19:48 +00:00
* The `ContainerAwareRuntimeLoader` class has been removed. Use the
2017-02-14 19:09:41 +00:00
Twig `Twig_ContainerRuntimeLoader` class instead.
2017-07-15 11:11:15 +01:00
* Removed `DebugCommand` in favor of `Symfony\Bridge\Twig\Command\DebugCommand` .
* Removed `ContainerAwareInterface` implementation in `Symfony\Bundle\TwigBundle\Command\LintCommand` .
2016-10-11 21:49:30 +01:00
TwigBridge
----------
2017-07-19 07:45:45 +01:00
* removed the `Symfony\Bridge\Twig\Form\TwigRenderer` class, use the `FormRenderer`
class from the Form component instead
2016-12-22 10:59:07 +00:00
* Removed the possibility to inject the Form `TwigRenderer` into the `FormExtension` .
Upgrade Twig to `^1.30` , inject the `Twig_Environment` into the `TwigRendererEngine` and load
the `TwigRenderer` using the `Twig_FactoryRuntimeLoader` instead.
Before:
```php
use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Bridge\Twig\Form\TwigRenderer;
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
// ...
$rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'));
$rendererEngine->setEnvironment($twig);
$twig->addExtension(new FormExtension(new TwigRenderer($rendererEngine, $csrfTokenManager)));
```
After:
```php
$rendererEngine = new TwigRendererEngine(array('form_div_layout.html.twig'), $twig);
$twig->addRuntimeLoader(new \Twig_FactoryRuntimeLoader(array(
TwigRenderer::class => function () use ($rendererEngine, $csrfTokenManager) {
return new TwigRenderer($rendererEngine, $csrfTokenManager);
},
)));
$twig->addExtension(new FormExtension());
```
* Removed the `TwigRendererEngineInterface` interface.
2016-10-11 21:49:30 +01:00
2016-12-22 10:31:59 +00:00
* The `TwigRendererEngine::setEnvironment()` method has been removed.
Pass the Twig Environment as second argument of the constructor instead.
2017-08-12 11:12:58 +01:00
* Removed `DebugCommand::set/getTwigEnvironment` . Pass an instance of
`Twig\Environment` as first argument of the constructor instead.
* Removed `LintCommand::set/getTwigEnvironment` . Pass an instance of
`Twig\Environment` as first argument of the constructor instead.
2017-07-26 07:46:38 +01:00
2016-12-22 10:31:59 +00:00
2016-11-30 22:57:42 +00:00
Validator
---------
2017-05-21 11:28:38 +01:00
* The default value of the `strict` option of the `Choice` constraint was changed
to `true` . Using any other value will throw an exception.
2016-11-30 22:57:42 +00:00
* The `DateTimeValidator::PATTERN` constant was removed.
* `Tests\Constraints\AbstractConstraintValidatorTest` has been removed in
favor of `Test\ConstraintValidatorTestCase` .
Before:
```php
// ...
use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest;
class MyCustomValidatorTest extends AbstractConstraintValidatorTest
{
// ...
}
```
After:
```php
// ...
use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
class MyCustomValidatorTest extends ConstraintValidatorTestCase
{
// ...
}
```
2017-01-18 14:08:35 +00:00
2017-09-04 15:58:03 +01:00
* Setting the `checkDNS` option of the `Url` constraint to `true` is dropped
in favor of `Url::CHECK_DNS_TYPE_*` constants values.
Before:
```php
$constraint = new Url(['checkDNS' => true]);
```
After:
```php
$constraint = new Url(['checkDNS' => Url::CHECK_DNS_TYPE_ANY]);
```
2017-04-30 14:22:14 +01:00
VarDumper
---------
* The `VarDumperTestTrait::assertDumpEquals()` method expects a 3rd `$context = null`
argument and moves `$message = ''` argument at 4th position.
Before:
```php
VarDumperTestTrait::assertDumpEquals($dump, $data, $message = '');
```
After:
```php
VarDumperTestTrait::assertDumpEquals($dump, $data, $filter = 0, $message = '');
```
* The `VarDumperTestTrait::assertDumpMatchesFormat()` method expects a 3rd `$context = null`
argument and moves `$message = ''` argument at 4th position.
Before:
```php
VarDumperTestTrait::assertDumpMatchesFormat($dump, $data, $message = '');
```
After:
```php
VarDumperTestTrait::assertDumpMatchesFormat($dump, $data, $filter = 0, $message = '');
```
2017-09-04 15:58:03 +01:00
WebProfilerBundle
-----------------
* Removed the `getTemplates()` method of the `TemplateManager` class in favor
of the `getNames()` method
2017-02-23 11:35:33 +00:00
Workflow
--------
* Removed class name support in `WorkflowRegistry::add()` as second parameter.
2016-01-27 23:13:26 +00:00
Yaml
----
2017-06-24 15:09:41 +01:00
* Support for the `!str` tag was removed, use the `!!str` tag instead.
2017-03-19 21:19:14 +00:00
* Starting an unquoted string with a question mark followed by a space
throws a `ParseException` .
* Removed support for implicitly parsing non-string mapping keys as strings.
2017-07-23 13:40:01 +01:00
Mapping keys that are no strings will result in a `ParseException` . Use
quotes to opt-in for keys to be parsed as strings.
2017-02-20 06:08:19 +00:00
Before:
```php
$yaml = < < < YAML
null: null key
true: boolean true
2.0: float key
YAML;
Yaml::parse($yaml);
```
After:
```php
$yaml = < < < YAML
2017-07-23 13:40:01 +01:00
"null": null key
"true": boolean true
"2.0": float key
2017-02-20 06:08:19 +00:00
YAML;
2017-07-23 13:40:01 +01:00
Yaml::parse($yaml);
2017-02-20 06:08:19 +00:00
```
2017-05-29 21:10:45 +01:00
* Removed the `Yaml::PARSE_KEYS_AS_STRINGS` flag.
Before:
```php
$yaml = < < < YAML
null: null key
true: boolean true
2.0: float key
YAML;
Yaml::parse($yaml, Yaml::PARSE_KEYS_AS_STRINGS);
```
After:
```php
$yaml = < < < YAML
"null": null key
"true": boolean true
"2.0": float key
YAML;
Yaml::parse($yaml);
```
2017-02-17 06:51:07 +00:00
* Omitting the key of a mapping is not supported anymore and throws a `ParseException` .
2016-08-25 07:47:13 +01:00
* Mappings with a colon (`:`) that is not followed by a whitespace are not
supported anymore and lead to a `ParseException` (e.g. `foo:bar` must be
`foo: bar` ).
2016-08-04 23:00:11 +01:00
2016-02-15 17:14:40 +00:00
* Starting an unquoted string with `%` leads to a `ParseException` .
2016-02-09 22:58:46 +00:00
* The `Dumper::setIndentation()` method was removed. Pass the indentation
level to the constructor instead.
2016-02-08 18:49:14 +00:00
* Removed support for passing `true` /`false` as the second argument to the
`parse()` method to trigger exceptions when an invalid type was passed.
Before:
```php
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', true);
```
After:
```php
2016-02-09 20:01:34 +00:00
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
2016-02-08 18:49:14 +00:00
```
* Removed support for passing `true` /`false` as the third argument to the
`parse()` method to toggle object support.
Before:
```php
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, true);
```
After:
```php
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT);
```
* Removed support for passing `true` /`false` as the fourth argument to the
`parse()` method to parse objects as maps.
Before:
```php
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, false, true);
```
After:
```php
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT_FOR_MAP);
```
2016-02-09 19:56:50 +00:00
* Removed support for passing `true` /`false` as the fourth argument to the
`dump()` method to trigger exceptions when an invalid type was passed.
Before:
```php
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, true);
```
After:
```php
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
```
2016-04-01 02:30:15 +01:00
* Removed support for passing `true` /`false` as the fifth argument to the
`dump()` method to toggle object support.
2016-01-27 19:42:59 +00:00
Before:
```php
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
```
After:
```php
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, Yaml::DUMP_OBJECT);
```
2016-01-27 23:13:26 +00:00
* The `!!php/object` tag to indicate dumped PHP objects was removed in favor of
the `!php/object` tag.
2015-05-03 23:10:27 +01:00
2016-08-27 10:58:27 +01:00
* Duplicate mapping keys lead to a `ParseException` .
2017-01-13 09:07:29 +00:00
2017-01-10 17:32:05 +00:00
* The constructor arguments `$offset` , `$totalNumberOfLines` and
`$skippedLineNumbers` of the `Parser` class were removed.
2017-05-25 10:38:18 +01:00
* The behavior of the non-specific tag `!` is changed and now forces
non-evaluating your values.
2017-05-25 11:16:49 +01:00
* The `!php/object:` tag was removed in favor of the `!php/object` tag (without
the colon).
* The `!php/const:` tag was removed in favor of the `!php/const` tag (without
the colon).
Before:
```yml
!php/const:PHP_INT_MAX
```
After:
```yml
!php/const PHP_INT_MAX
```