silent / twig-const-resolver

此包已弃用,不再维护。没有推荐替代包。

一个简单的Twig插件,用于在模板缓存构建时解析常量

1.1.1 2015-10-21 19:21 UTC

This package is not auto-updated.

Last update: 2020-01-24 15:51:37 UTC


README

Packagist Travis Coveralls

一个简单的Twig插件,用于在模板缓存构建时解析常量。

原因

例如,我们可能遇到以下情况

{% if usertype == constant('Users::TYPE_TROLL') %}
    Bye-bye
{% else %}
    Hello!
{% endif %}

没有此扩展,Twig会将其编译为类似以下内容

if (((isset($context["usertype"]) ? $context["usertype"] : null) == twig_constant("Users::TYPE_TROLL"))) {
    // twig_constant will be evaluated in runtime
    echo "Bye-bye";
} else {
    echo "Hello";
}

即使没有这个名称的常量,它也会被编译。因此,在生产环境中,您将遇到错误。

使用此扩展,您可以避免这类错误,因为它会在构建步骤中评估常量,所以这个模板将被编译为类似以下内容

if (((isset($context["usertype"]) ? $context["usertype"] : null) == Users::TYPE_TROLL)) {
    // constant is resolved at the build step (Users::TYPE_TROLL)
    echo "Bye-bye";
} else {
    echo "Hello";
}

在评估模式下,它也可以编译为类似以下内容

if (((isset($context["usertype"]) ? $context["usertype"] : null) == 2)) {
    // constant is resolved and evaluated at the build step (Users::TYPE_TROLL => 2)
    echo "Bye-bye";
} else {
    echo "Hello";
}

安装

可以通过Composer安装此扩展

{
    "require": {
        "silent/twig-const-resolver": "~1.1"
    }
}

配置

$twig->addExtension(
    /**
     * @param $evaluate bool Evaluate consts (default: false)
     */
    new \silent\Twig\ConstantResolverExtension\Extension()
);