我可以像这样为我的项目创建一个Twig扩展
class Functions extends Twig_Extension{ public function getName(){return 'foobar';} public function getFunctions() { return array( 'loremipsum' => new \Twig_SimpleFunction('asset', 'Functions::loremipsum') ); public static function loremipsum($foo) { return $foo; } }
这是有效的,但我想使用构造函数在一些函数中注入一些我需要的数据.
简单地使用'asset'
in Twig_SimpleFunction
将导致PHP尝试执行functonloremipsum()
public function getFunctions() { return array( 'foo' => new Twig_Function_Method($this, 'bar'); ); } public function bar($baz) { return $this->foo . $baz; }
查看extend Twig_Function
指定模板函数的所有不同方法的所有不同类.
对于较新的Twig_SimpleFunction
,似乎你可以将任何类型callable
的第二个参数传递给构造函数:
new Twig_SimpleFunction('foo', array($this, 'bar'))