我一直在努力,包括文件的列表內容:爲什麼我不能在'array_map'中使用'require'?
$files = [
'a.php',
'b.php',
];
$contents = array_map('require', $files);
但這並沒有工作。我得到的錯誤是:
警告:array_map()預計參數1是一個有效的回調,功能「要求」未找到或無效的函數名
爲什麼會這樣,是有辦法使其工作?
我一直在努力,包括文件的列表內容:爲什麼我不能在'array_map'中使用'require'?
$files = [
'a.php',
'b.php',
];
$contents = array_map('require', $files);
但這並沒有工作。我得到的錯誤是:
警告:array_map()預計參數1是一個有效的回調,功能「要求」未找到或無效的函數名
爲什麼會這樣,是有辦法使其工作?
因爲require不是函數,所以它是一種語言結構。
你需要創建一個有效的回調函數來進行實際的需要,或使用自動加載磁帶機
馬克·貝克同意,因爲它不是功能,您可以在情況下使用_autoload()要包括的類文件。
'__autoload()'在開頭有兩個下劃線,不是一個 – 2015-04-02 12:15:03
正如大家已經注意到的那樣 - 它是一種語言結構。
你可以在這裏嘗試這種
$includes = array('a.php', 'b.php');
array_map(function($file){
require $file;
}, $includes);
use autoload or spl_autoload_register
to comfort work use namespaces
or you may use array_wallk without return value and anonunys function
`$files` = [
'a.php',
'b.php',
];
`$contents` = array_map(`$files`, function(`$el`){
require(`$el`);
});
//but foreach working faster:
foreach(`$files` as `$item`){
require(`$item`
);}`
我不認爲這些反引號應該在碼 – Rizier123 2015-04-02 12:18:51
小邊注:由於需要是一個語言結構,也並不需要括號例如'require「test.php」'在沒有括號的情況下是完全有效的,但是你也可以使用括號來做 – Rizier123 2015-04-02 12:01:15