Docs
Deprecated Features
Warning Twig version 2.x is no longer maintained.
Deprecated Features
This document lists deprecated features in Twig 2.x. Deprecated features are kept for backward compatibility and removed in the next major release (a feature that was deprecated in Twig 2.x is removed in Twig 3.0).
PSR-0
- PSR-0 classes are deprecated in favor of namespaced ones since Twig 2.7.
Inheritance
- Defining a "block" definition in a non-capturing block in a child template is
deprecated since Twig 2.5.0. In Twig 3.0, it will throw a
Twig\Error\SyntaxError
exception. It does not work anyway, so most projects won't need to do anything to upgrade.
Errors
- Passing a string as the
$source
argument on\Twig\Error\Error
/Twig\Error\Error
constructor is deprecated since Twig 2.6.1. Pass an instance ofTwig\Source
instead.
Tags
- The
spaceless
tag is deprecated in Twig 2.7. Use thespaceless
filter instead or{% apply spaceless %}
(theTwig\Node\SpacelessNode
andTwig\TokenParser\SpacelessTokenParser
classes are also deprecated). - Using the
spaceless
tag at the root level of a child template is deprecated in Twig 2.5.0. This does not work as one would expect it to work anyway. In Twig 3.0, it will throw aTwig\Error\SyntaxError
exception. - The
filter
tag is deprecated in Twig 2.9. Use theapply
tag instead (theTwig\TokenParser\FilterTokenParser
classes is also deprecated). - Adding an
if
condition on afor
tag is deprecated in Twig 2.10. Use afilter
filter or an "if" condition inside the "for" body instead (if your condition depends on a variable updated inside the loop).
Final Classes
The following classes are marked as @final
in Twig 2 and will be final in
3.0:
Twig\Node\ModuleNode
Twig\TwigFilter
Twig\TwigFunction
Twig\TwigTest
Twig\Profiler\Profile
Parser
- As of Twig 2.7, the
\Twig\Parser::isReservedMacroName()
/Twig\Parser
function is deprecated and will be removed in Twig 3.0. It always returnsfalse
anyway as Twig 2 does not have any reserved macro names.
Environment
- As of Twig 2.7, the
base_template_class
option onTwig\Environment
is deprecated and will be removed in Twig 3.0. - As of Twig 2.7, the
Twig\Environment::getBaseTemplateClass()
andTwig\Environment::setBaseTemplateClass()
methods are deprecated and will be removed in Twig 3.0. - As of Twig 2.7, the
Twig\Environment::getTemplateClass()
is marked as being internal and should not be used. - As of Twig 2.7, passing a
Twig\Template
instance to theTwig\Environment::load()
andTwig\Environment::resolveTemplate()
is deprecated. - Depending on the input,
Twig\Environment::resolveTemplate()
can return aTwig\Template
or aTwig\TemplateWrapper
instance. In Twig 3.0, this method will always return aTwig\TemplateWrapper
instance. You should only rely on the methods of this class if you want to be forward-compatible.
Interfaces
- As of Twig 2.7, the empty
Twig\Loader\ExistsLoaderInterface
interface is deprecated and will be removed in Twig 3.0. - As of Twig 2.7, the
Twig\Extension\InitRuntimeInterface
interface is deprecated and will be removed in Twig 3.0.
Extensions
- As of Twig 2.11, the
Twig\Extension\CoreExtension::setEscaper()
andTwig\Extension\CoreExtension::getEscapers()
are deprecated. Use the same methods onTwig\Extension\EscaperExtension
instead.
Miscellaneous
- As of Twig 2.7, the
Twig_SimpleFilter
,Twig_SimpleFunction
, andTwig_SimpleTest
empty classes are deprecated and will be removed in Twig 3.0. UseTwig\TwigFilter
,Twig\TwigFunction
, andTwig\TwigTest
respectively. - As of Twig 2.8.2, all usage of
Twig\Loader\FilesystemLoader::findTemplate()
check for anull
return value (same meaning as returningfalse
). If you are overiddingTwig\Loader\FilesystemLoader::findTemplate()
, you must returnnull
instead offalse
to be compatible with Twig 3.0.