Mam pewien skrypt php, który działa non stop i czasem niestety trzeba coś zmodyfikować w kodzie.
Muszę wtedy wyłączać go i ponownie włączać.
Pomyślałem zatem, aby zmienić funkcje w taki sposób, aby wykonywały kod w zmiennych zawierających funkcje anonimowe, coś w tym stylu
function functionA() {
global $functionA;
$functionA();
}
function functionB($var1, $var2=null) {
global $functionB;
$functionB($var1, $var2);
}
function initFunctions() {
global $functionA, $functionB;
$functionA = function() {
echo "Hello World";
};
$functionB = function() {
// Here Some Code
};
}
function changeFunction($which, $code) {
$tempVar = "function". $which;
global $$tempVar;
// $$tempVar = eval($code); // przypisuje rezultat działania funkcji (wartość zwracaną przez return lub null)
// $$tempVar = $code; // przypisuje kod funkcji, jako string
}
I o ile coś takiego działa to pojawiają się dwa problemy. Nie wiem jak zmodyfikować w późniejszym czasie $functionA i $functionB, by działały nadal jako funkcje.
Zwykłe przypisanie ciągu znaków "function() { // code }" oczywiście nie zadziała. Nie zadziała także eval(), gdyż od razu spróbuje wykonać funkcje i przypisze wartość przez nią zwracaną.
Jak można to zrobić?