dstone/twig-optimizations

Twig 扩展,可在编译后的代码上启用一些实验性的优化

dev-master 2016-11-30 06:31 UTC

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 变量使用了几种不同的类型或数组,可能会有一些调用仍然保留。