使函数中的所有全局变量可用

时间:2017-05-16 12:35:22

标签: php

我的项目使用模板系统将页面放在一起,涉及许多变量。通常,模板直接从索引文件加载,而不是从函数中加载。

但是,目前我只是让这个功能显示错误页面:

function show_error($error){
    global $root;
    global $template;
    $content=$root."/includes/pages/error_page.html.php";
    include $root . $template;
    exit();
}

但是,由于模板使用了许多超出此函数范围的变量,因此它只会出现大量未找到的变量错误。

有没有办法简单地在函数内部提供所有全局变量?我宁愿不单独声明所有可能的变量,因为它会非常繁琐,因为我经常在模板中添加更多变量。

2 个答案:

答案 0 :(得分:1)

您可以使用extract()将所有全局变量导入功能范围

$foo = 'bar'; // global scope
function test(){
    extract($GLOBALS, EXTR_OVERWRITE, 'g'); // import with prefix to avoid mess
    echo $g_foo; // outputs: bar
}

了解详情:http://php.net/manual/ru/function.extract.php

答案 1 :(得分:0)

如果$ content和$ root在全局上下文中,您可以在使用函数之前将其添加到函数中来访问它们:

global $content, $root;