blade 如何访问自身之外的已定义变量

how blade can access to defined varibles outside of itself

我想用 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[""]; ?>', $buffer);

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

?>

而我的主题是下面的代码

{!! $bar !!} 

编译的主题是

 ?> 
    <?php echo $GLOBALS["bar"]; ?> 

我使用 $GLOBALS 访问变量 但是在blade中编译后的代码如下

<?php echo $bar; ?>

如何 blade 可以直接使用名称访问定义的变量?

虽然我怀疑它会是这样,但我无法确认 blade 是如何做到的,但基本上 extract 完全按照您的要求进行操作:

http://php.net/manual/en/function.extract.php

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