This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/UPGRADE-4.0.md

264 lines
6.5 KiB
Markdown
Raw Normal View History

2016-01-27 23:13:26 +00:00
UPGRADE FROM 3.x to 4.0
=======================
Debug
-----
* `FlattenException::getTrace()` now returns additional type descriptions
`integer` and `float`.
2016-01-27 23:13:26 +00:00
DependencyInjection
-------------------
* Calling `get()` on a `ContainerBuilder` instance before compiling the
container is not supported anymore and will throw an exception.
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.
* Setting or unsetting a private service with the `Container::set()` method is
no longer supported. Only public services can be set or unset.
* 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.
2016-01-27 23:13:26 +00:00
Form
----
* The `choices_as_values` option of the `ChoiceType` has been removed.
* 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.
* Using callable strings as choice options in ChoiceType is not supported
anymore in favor of passing PropertyPath instances.
Before:
```php
'choice_value' => new PropertyPath('range'),
'choice_label' => 'strtoupper',
```
After:
```php
'choice_value' => 'range',
'choice_label' => function ($choice) {
return strtoupper($choice);
},
```
* 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
* 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()) {
// ...
}
```
2016-04-01 02:30:15 +01:00
FrameworkBundle
---------------
* 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:
- `"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"`
* 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.
* The `Controller::getUser()` method has been removed in favor of the ability
to typehint the security user object in the action.
HttpKernel
----------
* 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.
* The `ControllerResolver::getArguments()` method has been removed. If you
have your own `ControllerResolverInterface` implementation, you should
inject an `ArgumentResolverInterface` instance.
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.
Translation
-----------
* Removed the backup feature from the file dumper classes.
2016-01-27 23:13:26 +00:00
Yaml
----
* Starting an unquoted string with `%` leads to a `ParseException`.
* The `Dumper::setIndentation()` method was removed. Pass the indentation
level to the constructor instead.
* 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
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
```
* 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);
```
* 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.
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.
Validator
---------
* 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
{
// ...
}
```