silent / twig-const-resolver
此包已弃用,不再维护。没有推荐替代包。
一个简单的Twig插件,用于在模板缓存构建时解析常量
1.1.1
2015-10-21 19:21 UTC
Requires
- php: >=5.6.0
- twig/twig: ~1.0
Requires (Dev)
- phpunit/phpunit: ~5.0.0
- satooshi/php-coveralls: ~0.6.0
This package is not auto-updated.
Last update: 2020-01-24 15:51:37 UTC
README
一个简单的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() );