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()
结合使用会变得非常有用。
我想用 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()
结合使用会变得非常有用。