グローバル関数を再定義することはできません(runkitの外部ですが、それは悪いブードゥーです)。そのため、次のように、クラス駆動型ソリューションまたは無名関数駆動型ソリューションを使用するオプションが残ります。
含まれているすべての関数を呼び出しキューにアセンブルする関数を作成できます(これは、キューを実行する別の無名関数です)。
function queueFunctions(array $functions){
return function()
use ($functions) {
foreach($functions as $function) {
$function();
}
};
}
そして、グローバル関数を再定義するのではなく、説明したように各ファイルから無名関数を返します。
file1.php
return function() {
echo 'Hello';
};
file2.php
return function() {
echo 'World';
};
次に、次のことができます。
// both
$function = queueFunctions([
include('file1.php'),
include('file2.php'),
]);
$function(); // HelloWorld
// one of them
$function = queueFunctions([
include('file2.php'),
]);
$function(); // World
// repeated calls
$function = queueFunctions([
include('file2.php'),
include('file1.php'),
include('file2.php'),
]);
$function(); // WorldHelloWorld