# Deprecated Features
This document lists all deprecated features in Twig. Deprecated features arekept for backward compatibility and removed in the next major release (afeature that was deprecated in Twig 1.x is removed in Twig 2.0).
### Deprecation Notices
As of Twig 1.21, Twig generates deprecation notices when a template usesdeprecated features. See [*Displaying Deprecation Notices*](#) for more information.
### Token Parsers
- As of Twig 1.x, the token parser broker sub-system is deprecated. Thefollowing class and interface will be removed in 2.0:
- `Twig_TokenParserBrokerInterface`
- `Twig_TokenParserBroker`
### Extensions
- As of Twig 1.x, the ability to remove an extension is deprecated and the`Twig_Environment::removeExtension()` method will be removed in 2.0.
- As of Twig 1.23, the `Twig_ExtensionInterface::initRuntime()` method isdeprecated. You have two options to avoid the deprecation notice: if youimplement this method to store the environment for your custom filters,functions, or tests, use the `needs_environment` option instead; if youhave more complex needs, explicitly implement`Twig_Extension_InitRuntimeInterface` (not recommended).
- As of Twig 1.23, the `Twig_ExtensionInterface::getGlobals()` method isdeprecated. Implement `Twig_Extension_GlobalsInterface` to avoiddeprecation notices.
### PEAR
PEAR support has been discontinued in Twig 1.15.1, and no PEAR packages areprovided anymore. Use Composer instead.
### Filters
- As of Twig 1.x, use `Twig_SimpleFilter` to add a filter. The followingclasses and interfaces will be removed in 2.0:
- `Twig_FilterInterface`
- `Twig_FilterCallableInterface`
- `Twig_Filter`
- `Twig_Filter_Function`
- `Twig_Filter_Method`
- `Twig_Filter_Node`
- As of Twig 2.x, the `Twig_SimpleFilter` class is deprecated and will beremoved in Twig 3.x (use `Twig_Filter` instead). In Twig 2.x,`Twig_SimpleFilter` is just an alias for `Twig_Filter`.
### Functions
- As of Twig 1.x, use `Twig_SimpleFunction` to add a function. The followingclasses and interfaces will be removed in 2.0:
- `Twig_FunctionInterface`
- `Twig_FunctionCallableInterface`
- `Twig_Function`
- `Twig_Function_Function`
- `Twig_Function_Method`
- `Twig_Function_Node`
- As of Twig 2.x, the `Twig_SimpleFunction` class is deprecated and will beremoved in Twig 3.x (use `Twig_Function` instead). In Twig 2.x,`Twig_SimpleFunction` is just an alias for `Twig_Function`.
### Tests
- As of Twig 1.x, use `Twig_SimpleTest` to add a test. The following classesand interfaces will be removed in 2.0:
- `Twig_TestInterface`
- `Twig_TestCallableInterface`
- `Twig_Test`
- `Twig_Test_Function`
- `Twig_Test_Method`
- `Twig_Test_Node`
- As of Twig 2.x, the `Twig_SimpleTest` class is deprecated and will beremoved in Twig 3.x (use `Twig_Test` instead). In Twig 2.x,`Twig_SimpleTest` is just an alias for `Twig_Test`.
- The `sameas` and `divisibleby` tests are deprecated in favor of `sameas` and `divisible by` respectively.
### Tags
- As of Twig 1.x, the `raw` tag is deprecated. You should use `verbatim`instead.
### Nodes
- As of Twig 1.x, `Node::toXml()` is deprecated and will be removed in Twig2.0.
### Interfaces
- As of Twig 2.x, the following interfaces are deprecated and empty (they willbe removed in Twig 3.0):
- `Twig_CompilerInterface` (use `Twig_Compiler` instead)
- `Twig_LexerInterface` (use `Twig_Lexer` instead)
- `Twig_NodeInterface` (use `Twig_Node` instead)
- `Twig_ParserInterface` (use `Twig_Parser` instead)
- `Twig_ExistsLoaderInterface` (merged with `Twig_LoaderInterface`)
- `Twig_TemplateInterface` (use `Twig_Template` instead, and usethose constants Twig_Template::ANY_CALL, Twig_Template::ARRAY_CALL,Twig_Template::METHOD_CALL)
### Loaders
- As of Twig 1.x, `Twig_Loader_String` is deprecated and will be removed in2.0. You can render a string via `Twig_Environment::createTemplate()`.
### Node Visitors
- Because of the removal of `Twig_NodeInterface` in 2.0, you need to extend`Twig_BaseNodeVisitor` instead of implementing `Twig_NodeVisitorInterface`directly to make your node visitors compatible with both Twig 1.x and 2.x.
### Globals
- As of Twig 2.x, the ability to register a global variable after the runtimeor the extensions have been initialized is not possible anymore (butchanging the value of an already registered global is possible).
- As of Twig 1.x, using the `_self` global variable to get access to thecurrent `Twig_Template` instance is deprecated; most usages only need thecurrent template name, which will continue to work in Twig 2.0. In Twig 2.0,`_self` returns the current template name instead of the current`Twig_Template` instance.
### Miscellaneous
- As of Twig 1.x, `Twig_Environment::clearTemplateCache()`, `Twig_Environment::writeCacheFile()`,`Twig_Environment::clearCacheFiles()`, `Twig_Environment::getCacheFilename()`, and`Twig_Environment::getTemplateClassPrefix()` are deprecated and will be removed in 2.0.
- As of Twig 1.x, `Twig_Template::getEnvironment()` and`Twig_TemplateInterface::getEnvironment()` are deprecated and will beremoved in 2.0.
- Twig
- Introduction
- Installation
- Twig for Template Designers
- Twig for Developers
- Extending Twig
- Twig Internals
- Deprecated Features
- Recipes
- Coding Standards
- Tags
- autoescape
- block
- do
- embed
- extends
- filter
- flush
- for
- from
- if
- import
- include
- macro
- sandbox
- set
- spaceless
- use
- verbatim
- Filters
- abs
- batch
- capitalize
- convert_encoding
- date
- date_modify
- default
- escape
- first
- format
- join
- json_encode
- keys
- last
- length
- lower
- merge
- nl2br
- number_format
- raw
- replace
- reverse
- round
- slice
- sort
- split
- striptags
- title
- trim
- upper
- url_encode
- Functions
- attribute
- block
- constant
- cycle
- date
- dump
- include
- max
- min
- parent
- random
- range
- source
- template_from_string
- Tests
- constant
- defined
- divisible by
- empty
- even
- iterable
- null
- odd
- same as