我只是想知道是否有人知道为什么我不能使用require_once
作为array_walk
的回调。我可以将它包含在一个匿名函数中并运行它,但它为使用提供了无效的回调错误:
$includes = array(
'file1.php',
'file2.php',
'file3.php'
);
array_walk($includes, 'require_once');
答案 0 :(得分:6)
require_once
不是PHP函数,而是控制结构。
答案 1 :(得分:2)
你可以创建
function my_require_once ($name)
{
require_once $name;
}
其他人是对的,这不是一个功能。它在您编写的PHP代码模式之外运行。如上所述,即使在函数内调用,文件的内容也会被带入全局命名空间。
我使用它,例如做
之类的东西function my_log ($message, $extra_data = null)
{
global $php_library;
require_once "$php_library/log.php"; // big and complicated functions, so defer loading
my_log_fancy_stuff ($message, $extra_data);
}
答案 2 :(得分:2)
你会浪费更多的时间来发现错误。只需使用:
$includes = array(
'file1.php',
'file2.php',
'file3.php'
);
foreach($includes as $include) {
require_once($include);
}
答案 3 :(得分:0)
正如马丁写道,要求曾经不是一个函数,所以你的array_walk解决方案并没有起作用。如果要包含多个文件,可以尝试使用它:
function require_multi($files)
{
$files = func_get_args();
foreach($files as $file)
{
require_once($file);
}
}
用法:
require_multi("fil1.php", "file2.php", "file3.php");