Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Twig扩展中获取令牌解析器中的变量_Php_Symfony_Twig - Fatal编程技术网

Php 如何在Twig扩展中获取令牌解析器中的变量

Php 如何在Twig扩展中获取令牌解析器中的变量,php,symfony,twig,Php,Symfony,Twig,我无法在我的小树枝扩展中传递正确的数据 令牌解析器parse函数示例: public function parse(\Twig_Token $token) { $parser = $this->parser; $stream = $parser->getStream(); $firstVariable = $stream->getCurrent(); } 表达式{%myTag“someString”%}将$firstVariable设置为“s

我无法在我的小树枝扩展中传递正确的数据

令牌解析器
parse
函数示例:

public function parse(\Twig_Token $token)
{
    $parser = $this->parser;
    $stream = $parser->getStream();

    $firstVariable = $stream->getCurrent();    
}
表达式
{%myTag“someString”%}
$firstVariable
设置为“someString”

但是,如果我们设置了一个变量:

{% set someVariable = "someString" %}
{% myTag someVariable %}
最终得到的名称类型值为“someVariable”,而不是预期的变量值“someString”

如何正确解析自定义细枝标记的第一个参数,允许输入为字符串或包含字符串的变量

编辑

看起来您可以只取变量名并在返回的细枝节点中使用它

public function compile(){
    $compiler->write('echo "$context[$variableName]"');
}
但我需要在编译之前访问它

编辑
我不再相信在编译之前可以访问上下文。除非任何人有更多关于这个主题的信息可供分享,否则这个问题就是哑巴。是的,细枝代码首先转换为解析树,然后编译,然后执行。因此,只有在运行时才能访问变量的值。我就这个问题写了一个完整的答案。