- The ApcClassLoader, WinCacheClassLoader and XcacheClassLoader classes have been removed
in favor of the
--apcu-autoloader
option introduced in composer 1.3
- Setting unknown style options is not supported anymore and throws an exception.
FlattenException::getTrace()
now returns additional type descriptionsinteger
andfloat
.
-
Using the
PhpDumper
with an uncompiledContainerBuilder
is not supported anymore. -
The
DefinitionDecorator
class has been removed. Use theChildDefinition
class instead. -
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 returnfalse
. -
Requesting a private service with the
Container::get()
method is no longer supported.
- The ability to pass a
ParserCacheInterface
instance to theExpressionLanguage
class has been removed. You should use theCacheItemPoolInterface
interface instead.
- The
ExceptionInterface
has been removed.
-
The
choices_as_values
option of theChoiceType
has been removed. -
Support for data objects that implements both
Traversable
andArrayAccess
inResizeFormListener::preSubmit
method has been removed. -
Using callable strings as choice options in ChoiceType is not supported anymore in favor of passing PropertyPath instances.
Before:
'choice_value' => new PropertyPath('range'), 'choice_label' => 'strtoupper',
After:
'choice_value' => 'range', 'choice_label' => function ($choice) { return strtoupper($choice); },
-
Caching of the loaded
ChoiceListInterface
in theLazyChoiceList
has been removed, it must be cached in theChoiceLoaderInterface
implementation instead. -
Calling
isValid()
on aForm
instance before submitting it is not supported anymore and raises an exception.Before:
if ($form->isValid()) { // ... }
After:
if ($form->isSubmitted() && $form->isValid()) { // ... }
-
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 servicesserializer.mapping.cache.apc
andserializer.mapping.cache.doctrine.apc
have been removed. APCu should now be automatically used when available.
- The
FirewallContext::getContext()
method has been removed, use thegetListeners()
method instead.
-
Extending the following methods of
Response
is no longer possible (these methods are nowfinal
):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
-
The ability to check only for cacheable HTTP methods using
Request::isMethodSafe()
is not supported anymore, useRequest::isMethodCacheable()
instead.
-
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 ownControllerResolverInterface
implementation, you should inject anArgumentResolverInterface
instance. -
The
DataCollector::varToString()
method has been removed in favor ofcloneVar()
. -
The
Psr6CacheClearer::addPool()
method has been removed. Pass an array of pools indexed by name to the constructor instead.
- The
RoleInterface
has been removed. Extend theSymfony\Component\Security\Core\Role\Role
class instead.
-
The ability to pass a Doctrine
Cache
instance to theClassMetadataFactory
class has been removed. You should use theCacheClassMetadataFactory
class instead. -
Not defining the 6th argument
$format = null
of theAbstractNormalizer::instantiateObject()
method when overriding it is not supported anymore.
- Removed the backup feature from the file dumper classes.
-
The possibility to inject the Form Twig Renderer into the form extension has been removed. Inject it into the
TwigRendererEngine
instead. -
The
TwigRendererEngine::setEnvironment()
method has been removed. Pass the Twig Environment as second argument of the constructor instead.
-
The
DateTimeValidator::PATTERN
constant was removed. -
Tests\Constraints\AbstractConstraintValidatorTest
has been removed in favor ofTest\ConstraintValidatorTestCase
.Before:
// ... use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest; class MyCustomValidatorTest extends AbstractConstraintValidatorTest { // ... }
After:
// ... use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; class MyCustomValidatorTest extends ConstraintValidatorTestCase { // ... }
-
The default value of the strict option of the
Choice
Constraint has been changed totrue
as of 4.0. If you need the the previous behaviour ensure to set the option tofalse
.
-
Mappings with a colon (
:
) that is not followed by a whitespace are not supported anymore and lead to aParseException
(e.g.foo:bar
must befoo: bar
). -
Starting an unquoted string with
%
leads to aParseException
. -
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 theparse()
method to trigger exceptions when an invalid type was passed.Before:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', true);
After:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
-
Removed support for passing
true
/false
as the third argument to theparse()
method to toggle object support.Before:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, true);
After:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT);
-
Removed support for passing
true
/false
as the fourth argument to theparse()
method to parse objects as maps.Before:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, false, true);
After:
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT_FOR_MAP);
-
Removed support for passing
true
/false
as the fourth argument to thedump()
method to trigger exceptions when an invalid type was passed.Before:
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, true);
After:
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
-
Removed support for passing
true
/false
as the fifth argument to thedump()
method to toggle object support.Before:
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
After:
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, Yaml::DUMP_OBJECT);
-
The
!!php/object
tag to indicate dumped PHP objects was removed in favor of the!php/object
tag. -
Duplicate mapping keys lead to a
ParseException
.