twig template engine, используя статическую функцию или переменную

Есть ли способ вызвать статическую функцию или использовать старую переменную в веточке?

У меня есть класс статических вспомогательных функций и вы хотите использовать один или два в шаблоне.

Пару пути я закончил это делать.

Сначала это функция, которая может вызвать статическую функцию.

$twig = new Twig_Environment($loader); $twig->addFunction('staticCall', new Twig_Function_Function('staticCall')); function staticCall($class, $function, $args = array()) { if (class_exists($class) && method_exists($class, $function)) return call_user_func_array(array($class, $function), $args); return null; } 

Затем можно использовать как,

 {{ staticCall('myClass', 'mymethod', [optional params]) }} 

Другой – использовать магический метод.

Добавить класс в контекст render $

 $data['TwigRef'] = new TheClass(); class TheClass { public function __call($name, $arguments) { return call_user_func_array(array('TheClass', $name), $arguments); } ... } 

Затем можно использовать как,

 {{ TwigRef.myMethod(optional params) }} 

Вероятно, лучше добавить дополнительные проверки, чтобы вызывались только разрешенные функции.

Вы можете динамически добавлять функции в свои шаблоны ветви, зарегистрировав их. Либо они уже вызываются, либо вы используете свою статическую функцию по имени:

 $twig = new Twig_Environment($loader); $twig->addFunction('functionName', new Twig_Function_Function('someFunction')); 

См. Раздел « Функции » в «Расширение веточки» .