如何创建自定义Twig函数类,而不使用静态方法?

 羊爱恋上狼 发布于 2023-02-09 14:00

我可以像这样为我的项目创建一个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()

1 个回答
  • 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'))
    

    2023-02-09 14:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有