You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twig 2.12.5中是否有PHP __LINE__的等效实现?

在Twig 2.12.5中实现类似PHP __LINE__的功能

Twig 2.x没有原生提供和PHP __LINE__完全等效的内置功能,但可以通过两种方式实现行号输出,满足你调试嵌套代码的需求:

方法1:自定义Twig扩展(推荐)

你可以创建一个简单的Twig扩展,添加一个返回当前模板行号的函数:

class DebugExtension extends \Twig\Extension\AbstractExtension
{
    public function getFunctions()
    {
        return [
            new \Twig\TwigFunction('line', [$this, 'getCurrentLine']),
        ];
    }

    public function getCurrentLine(\Twig\Environment $env)
    {
        $template = $env->getTemplateClass();
        $lineno = $env->getTemplate($template)->getTemplateLine();
        return $lineno;
    }
}

注册这个扩展后,就能在模板里直接调用{{ line() }}输出当前行号,比如:

<script>
console.log('当前Twig模板行号:{{ line() }}');
</script>

方法2:利用Twig的source函数(临时调试用)

如果不想写扩展,可以用source函数获取当前模板内容,结合字符串分割来估算行号(注意:这种方法在模板有包含、继承时可能不准确,仅适合简单场景):

{% set line_count = 0 %}
{% for _ in source(_self)|split('\n') %}
    {% set line_count = line_count + 1 %}
    {% if loop.index == _self.getTemplateLine() %}
        {% set current_line = line_count %}
    {% endif %}
{% endfor %}

<script>
console.log('当前行号:{{ current_line }}');
</script>

注意:第二种方法依赖模板编译时的行号映射,在包含宏、继承结构的复杂模板中可能出现偏差,优先推荐第一种自定义扩展的方式。

内容的提问来源于stack exchange,提问作者user2342558

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:35:24