以下是编写Twig Extensions的Symfony指南:http://symfony.com/doc/current/cookbook/templating/twig_extension.html
注意它提供:
// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;
class AppExtension extends \Twig_Extension
{
public function getName()
{
return 'app_extension';
}
}
以下是Twig API:https://github.com/twigphp/Twig/blob/1.x/lib/Twig/Extension.php
那里没有getName函数()。
那么我们为什么要提供一个呢?它有什么用途?
答案 0 :(得分:2)
根据界面,查看Twig_ExtensionInterface
Twig_Extension
实施,getName()
需要在您的自定义树枝扩展程序中实现。
根据sensiolabs(link here)的人们提供的枝条文件:
为了使您的扩展类保持干净和精益,它可以从内置的
Twig_Extension
类继承而不是实现整个接口。这样,您只需要实现getName()
方法,因为Twig_Extension
为所有其他方法提供了空实现。
getName()
方法必须为您的扩展程序返回唯一标识符。
答案 1 :(得分:1)
方法getName()
在Twig_ExtensionInterface
实施的Twig_Extension
中定义。
来源:https://github.com/twigphp/Twig/blob/1.x/lib/Twig/ExtensionInterface.php
确保每个扩展名都有名称的好方法。
答案 2 :(得分:0)
与他评论中提到的@DarkBee一样,在{2}的2.0版本中删除了getName()
类Twig_ExtensionInterface
方法。
从Twig 1.x API我们可以看到该方法自版本1.26以来已被弃用,并在版本2.0中被删除。它也可以在changelog:
中看到1.26.0(2016-10-02)
- ...
- 已弃用
Twig_ExtensionInterface::getName()
另外,看例如在getExtension($name)
method in Environment.php
of Twig version 1.25.0,我们可以看到该方法用于通过 name 获取扩展名,而在version 1.26.0和version 2.4.4中,该方法用于通过类名获得扩展名。
所以,
getName()
方法。getName()
方法。 (嗯,你可以,但Twig没有使用它。)