After update symfony from 2.3 to 2.7, I am getting many deprecation warning messages for which I found no link for solving that issue.
The warning message I am getting is:
DEPRECATED - The Twig_Function class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead. -
Called from require() at line 154
Called from DebugClassLoader::loadClass()
Called from spl_autoload_call() at line 25
Called from require() at line 154
Called from DebugClassLoader::loadClass()
Called from spl_autoload_call() at line 22
Called from MenuExtension::getFunctions() at line 1282
Called from Twig_Environment::initExtension() at line 1263
Called from Twig_Environment::initExtensions() at line 1196
Called from Twig_Environment::getUnaryOperators() at line 371
Called from Twig_Lexer::getOperatorRegex() at line 65
Called from Twig_Lexer::__construct() at line 529
Called from Twig_Environment::getLexer() at line 557
Called from Twig_Environment::tokenize() at line 647
Called from Twig_Environment::compileSource() at line 382
Called from Twig_Environment::loadTemplate() at line 126
Called from TwigEngine::load() at line 50
Called from TwigEngine::render() at line 72
Called from TwigEngine::render() at line 97
Called from TwigEngine::renderResponse() at line 176
Called from Controller::render() at line 65
Called from DefaultController::indexAction()
Called from call_user_func_array() at line 3109
Called from HttpKernel::handleRaw() at line 3071
Called from HttpKernel::handle() at line 3222
Called from ContainerAwareHttpKernel::handle() at line 2444
Called from Kernel::handle() at line 34
For your information, this is the twig version I am using:
php composer.phar show -i | grep twig
twig/extensions v1.0.1 Common additional features for Twig that do not directly belong in core
twig/twig v1.22.1 Twig, the flexible, fast, and secure template language for PHP
NB. In my opinion, the deprecations come from the fact that some bundles I installed use some deprecated functions. So, below is composer.json file in case it could help.
"require": {
"php": ">=5.3.9",
"symfony/symfony": "2.7.*",
"doctrine/orm": "~2.2,>=2.2.3,<2.5",
"doctrine/dbal": "<2.5",
"doctrine/doctrine-bundle": "~1.4",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~3.0,>=3.0.12",
"sensio/framework-extra-bundle": "~3.0,>=3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"friendsofsymfony/user-bundle": "v2.0.0-alpha3",
"lunetics/locale-bundle": "v2.4.2",
"stof/doctrine-extensions-bundle": "1.2.*@dev",
"knplabs/knp-menu": "2.0.*@dev",
"knplabs/knp-menu-bundle": "2.0.*@dev",
"coresphere/console-bundle": "0.3.0",
"knplabs/knp-markdown-bundle": "1.4.*@dev",
"lunetics/timezone-bundle": "dev-master",
"knplabs/knp-time-bundle": "1.4.0",
"a2lix/translation-form-bundle": "1.*@dev",
"knplabs/doctrine-behaviors": "1.2.*@dev",
"genemu/form-bundle": "2.2.*@dev",
"friendsofsymfony/jsrouting-bundle": "@stable",
"willdurand/geocoder": "@stable",
"misd/guzzle-bundle": "1.1.*@dev",
"friendsofsymfony/rest-bundle": "1.4.*@dev",
"jms/serializer-bundle": "0.13.*@dev",
"imagine/imagine": "0.5.*@dev",
"liip/imagine-bundle": "1.0.*@dev",
"nelmio/api-doc-bundle": "@stable",
"hwi/oauth-bundle": "0.4.*@dev",
"friendsofsymfony/facebook-bundle": "dev-master",
"willdurand/geocoder-bundle": "3.0.*@dev",
"google/apiclient": "1.0.*@dev",
"vich/uploader-bundle": "0.10.0",
"nomaya/social-bundle": "1.0.*@dev",
"jms/i18n-routing-bundle": "dev-master"
}
NB. I have similar warning messages for Twig_Function_Method
, Twig_Function_Node
, ...
NB. This link tells us that there are deprecations but without specifying how to solve them.
I found the bundles causing me the deprecations. To find them, just look after the files containing the word Twig_Function_Method
for example through this command:
grep --exclude-dir={'./app/cache/','./app/logs/'} -rnw '.' -e "Twig_Filter_Method"
The result was this:
./vendor/jms/translation-bundle/JMS/TranslationBundle/Twig/TranslationExtension.php:56: 'desc' => new \Twig_Filter_Method($this, 'desc'),
./vendor/jms/translation-bundle/JMS/TranslationBundle/Twig/TranslationExtension.php:57: 'meaning' => new \Twig_Filter_Method($this, 'meaning'),
./vendor/jms/serializer/src/JMS/Serializer/Twig/SerializerExtension.php:46: 'serialize' => new \Twig_Filter_Method($this, 'serialize'),
./vendor/nelmio/api-doc-bundle/Nelmio/ApiDocBundle/Twig/Extension/MarkdownExtension.php:22: 'extra_markdown' => new \Twig_Filter_Method($this, 'markdown', array('is_safe' => array('html'))),
./vendor/knplabs/knp-time-bundle/Knp/Bundle/TimeBundle/Twig/Extension/TimeExtension.php:46: 'ago' => new \Twig_Filter_Method($this, 'diff', array(
./vendor/twig/twig/doc/deprecated.rst:45: * ``Twig_Filter_Method``
./vendor/twig/twig/doc/advanced_legacy.rst:707:You can also use ``Twig_Filter_Method`` instead of ``Twig_Filter_Function``
./vendor/twig/twig/doc/advanced_legacy.rst:715: 'rot13' => new Twig_Filter_Method($this, 'rot13Filter'),
./vendor/twig/twig/doc/advanced_legacy.rst:727:The first argument of the ``Twig_Filter_Method`` constructor is always
./vendor/twig/twig/doc/advanced_legacy.rst:747: 'date' => new Twig_Filter_Method($this, 'dateFilter'),
./vendor/twig/twig/lib/Twig/Filter/Method.php:12:@trigger_error('The Twig_Filter_Method class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFilter instead.', E_USER_DEPRECATED);
./vendor/twig/twig/lib/Twig/Filter/Method.php:23:class Twig_Filter_Method extends Twig_Filter
As conclusion, these are the bundles causing me deprecations: jms/translation-bundle
, nelmio/api-doc-bundle
, knplabs/knp-time-bundle
.
I will be waiting that these bundles got update.
I hope the answer will be helping other.
I found this thread because i got the same issues with updating twig.
In the logs you'll find this line:
/logs/symfony/dev.log:7000:[2017-04-05 10:10:57] php.INFO: The Twig_Function_Node class is deprecated since version 1.12 and will be removed in 2.0. Use Twig_SimpleFunction instead.
Maybe that help the next ones who will arrive here.
Just replace:
'form_range' => new \Twig_Function_Node(...);
with:
'form_range' => new \Twig_SimpleFunction(...),
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With