我需要知道如何调用$ twig->中定义的函数; addFunction(来自同一函数的新Twig_SimpleFunction或递归。 非常感谢你! 巴勃罗
答案 0 :(得分:0)
这可以通过将twig
实例传递给Twig_SimleFunction
$twig->addFunction(new \Twig_SimpleFunction('fibonacci', function($n) use($twig) {
if ($n == 0) return 0;
if ($n == 1) return 1;
$fn = $twig->getFunction('fibonacci')->getCallable();
return $fn($n -1) + $fn($n - 2);
}));
如果您使用扩展类,而不是在没有扩展类的情况下尝试进行递归,那会简单得多。
使用扩展类,你可以像这样做
class Project_Twig_Extension extends Twig_Extension {
public function getFunctions() {
return array(
new Twig_Function('fibonacci', array($this, 'fibonacci')),
);
}
private function fibonacci($n) {
if ($n == 0) return 0;
if ($n == 1) return 1;
return $this->fibonacci($n -1) + $this->fibonacci($n - 2);
}
}
note 要注册twig
的扩展程序,请执行以下操作:
$twig->addExtension(new Project_Twig_Extension());