Php 刀片如何访问自身外部定义的变量
我想用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
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在符号表中插入一个值数组,不用担心。祝模板引擎好运