How to solve obsolescence problem Twig_Function, Twig_Function_Method, Twig_Function_Node

After updating symfony from 2.3 to 2.7, I get a lot of warning messages about the failure, for which I could not find a link to solve this problem.

The warning message I get:

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 that I use:

 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, due to the fact that some packages that I installed use some deprecated features. So below is a composer.json file in case it can 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 warnings for Twig_Function_Method , Twig_Function_Node , ...

NB. This link tells us that there are deviations, but without specifying how to solve them.

+6
source share
2 answers

I found that the bundles caused me flaws. To find them, just look at 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 is the following:

 ./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 a conclusion, these are bundles causing my deviations: jms/translation-bundle , nelmio/api-doc-bundle , knplabs/knp-time-bundle .

I will wait for these packages to receive an update.

I hope the answer helps others.

+12
source

I found this thread because I had the same problems updating the branch.

In the logs you will 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. 

Perhaps this will help those who come here.

Just replace:

 'form_range' => new \Twig_Function_Node(...); 

with:

 'form_range' => new \Twig_SimpleFunction(...), 
+1
source

All Articles