我正在尝试创建一个函数,我可以将函数中定义的变量传递给另一个函数,这样我就可以提取变量并使用它们。让我首先展示我想要做的事情,这样更有意义。
function naija_render( $filePath, $defined_vars )
{
$viewData = compact(array_keys( $defined_vars ));
extract($viewData);
ob_start();
include ( $filePath . '.php' );
$template = ob_get_contents();
ob_end_clean();
return $template;
}
现在让我简化并具体说明。
如果我打印这个
print_r( compact(array_keys( get_defined_vars())) );
它打印紧凑数组但是当我尝试在函数中执行相同的操作时,我可以将get_defined_vars()
作为$defined_vars
传递,它会打印一个空数组。
function get_compact_defined_vars( $defined_vars ){
//Returns blank array
print_r( compact(array_keys($defined_vars) );
}
答案 0 :(得分:0)
试试这个:
//something like that:
naija_render('viewfile', array('var1', 'varN'));
//rewrite your function like that:
function naija_render( $filePath, $defined_vars )
{
$viewData = array();
foreach ($defined_vars as $var) {
$viewData[$var] = isset($GLOBALS[$var]) ? $GLOBALS[$var] : null;
}
extract($viewData);
ob_start();
include ( $filePath . '.php' );
$template = ob_get_contents();
ob_end_clean();
return $template;
}
编辑:我不推荐这个,但这确实解决了你的问题。