dstone / twig-optimizations
Twig 扩展,可在编译后的代码上启用一些实验性的优化
dev-master
2016-11-30 06:31 UTC
Requires
- twig/twig: ~1.27|~2.0
This package is auto-updated.
Last update: 2024-09-09 01:55:24 UTC
README
Twig 扩展,可在编译后的代码上启用一些实验性的优化
安装
添加到 composer
composer require dstone/twig-optimizations
在 twig 环境中注册扩展,例如使用以下命令:
$twig->addExtension(new Twig_Optimizations_Extension_GetAttributeOptimizer());
如果你使用 symfony,你可以在 config.yml 中将其添加为服务定义,例如:
services: twig.extension.optimizations: class: Twig_Optimizations_Extension_GetAttributeOptimizer tags: - { name: twig.extension }
优化
目前主要进行的优化是在可能的情况下消除 Twig_Template::getAttribute() 的使用。getAttribute 的大部分工作涉及查看 twig 变量的类型及其定义的方法。此扩展记录了模板第一次渲染时传递给 getAttribute 的每个 twig 变量的类或类型。然后它重新编译 twig 模板,将 getAttribute 调用替换为 instanceof 检查和直接调用方法或回退到使用 getAttribute,如果 twig 变量使用不同的类型。最终结果是大多数 getAttribute 调用都被移除,但如果模板中的 twig 变量使用了几种不同的类型或数组,可能会有一些调用仍然保留。