Php 刀片如何访问自身外部定义的变量

Php 刀片如何访问自身外部定义的变量,php,global-variables,blade,template-engine,Php,Global Variables,Blade,Template Engine,我想用php正则表达式创建一个模板引擎 我的模板引擎是以下代码 <?php class tmp { public function assign($name,$val){ $GLOBALS[$name]=$val; } public function compile($buffer){ $buffer= '?> '.preg_replace('~\{\!\!\s*\$(\

我想用php正则表达式创建一个模板引擎

我的模板引擎是以下代码

<?php

    class tmp
    {
        public function assign($name,$val){
            $GLOBALS[$name]=$val;
        }
        public function compile($buffer){
            $buffer= '?> '.preg_replace('~\{\!\!\s*\$(\w+)\s*\!\!\}~', '<?php echo $GLOBALS["$1"]; ?>', $buffer);

            file_put_contents('compiled.php', $buffer);
            return $buffer;
        }
        public function run($run){
            return eval($run);
        }
    }

?>
{!! $bar !!} 
编辑的主题是

 ?> 
    <?php echo $GLOBALS["bar"]; ?> 
?>
我使用$GLOBALS访问VAR 但是在blade中编译的代码如下

<?php echo $bar; ?>


blade如何使用其名称直接访问已定义的VAR?

我无法确认blade是这样做的,尽管我怀疑会是这样,但基本上extract就是这样做的:


它接受一个变量数组并直接插入到符号表中,以便直接访问它们。与
get\u defined\u variables()
结合使用,它变得非常有用

调查拉威尔的消息来源code@CharlotteDunoislaravel太大了,很难找到一个部分-我看了,但找不到它们,如果我的问题是获取变量,我可以使用在我过去的代码中使用的$GLOBALS准确地阅读我的全部答案-
extract
将它们转换为可用的
$bar
$GLOBALS['bar']
。Extract在符号表中插入一个值数组,不用担心。祝模板引擎好运