我只是想知道是否有人知道我爲什麼不能使用require_once
作爲array_walk
的回調。我可以將其包含在一個匿名函數和運行,但它提供了一個無效的回調錯誤用法:PHP array_walk require_once
$includes = array(
'file1.php',
'file2.php',
'file3.php'
);
array_walk($includes, 'require_once');
我只是想知道是否有人知道我爲什麼不能使用require_once
作爲array_walk
的回調。我可以將其包含在一個匿名函數和運行,但它提供了一個無效的回調錯誤用法:PHP array_walk require_once
$includes = array(
'file1.php',
'file2.php',
'file3.php'
);
array_walk($includes, 'require_once');
require_once
不是一個PHP函數,但控制結構。
您可以創建
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);
}
你要浪費更多的時間找出什麼是錯的。 Just use:
$includes = array(
'file1.php',
'file2.php',
'file3.php'
);
foreach($includes as $include) {
require_once($include);
}
正如Martin寫的,要求一次不是函數,所以你的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");
require_once不是一個函數,這是一個語言結構,因此它不能直接調用作爲回調函數 –
...如果您嘗試使用'array_walk($ includes,'echo')'作爲'echo'是一種語言結構而不是函數,那麼它也會導致無效回調錯誤。 –
+1以前的評論。但是,嚴重的是,爲什麼你不只是在這裏使用'foreach()'循環? – Spudley