简单问题:require_once全球范围是?
例如:
<?PHP
require_once('baz.php');
// do some stuff
foo ($bar);
function foo($bar) {
require_once('baz.php');
// do different stuff
}
?>
Run Code Online (Sandbox Code Playgroud)
调用foo时,是否会重新解析baz.php?或者它是否依赖于主php文件中已经需要的文件(对于相同的包含文件连续两次调用require_once)?
我之前看过这个帖子,但它没有完全回答这个问题:
应该require_once"some file.php"; 出现在文件顶部的任何地方?
谢谢你的帮助!
似乎如果require_once在函数内调用,则包含的文件不会扩展全局变量范围.如何require_once从函数中将文件转换为全局范围?
我正在尝试做的是一些动态模块加载器:
function projects_init()
{
...
foreach ($projects as $p) {
require_once($p['PHPFile']);
$init_func = $p['init'];
if ($init_func)
$init_func();
}
}
Run Code Online (Sandbox Code Playgroud)
如果无法使用require_once这种方式,最简单的解决方案是什么?(请不要沉重的框架.)
编辑:它也适用于PHP 5.2.