Мы можем изменить значение статической переменной класса извне, в этом преимущество статических переменных, но как мы можем изменить статический метод извне?
<?php
class A
{
static $static_var = 0;
static function test(){
return 'i want to change inside this test method';
}
}
echo A::$static_var; // outputs 0
++A::$static_var;
echo A::$static_var; // ouputs 1
// Now how do we do something to change the static test method body? is it possible ?
like
A::test() = function(){ /* this is wrong */}
}
Как сказал @Mark Baker, вы можете изменить только переменную …
Но есть способ объявить переменную как вызываемую, вы можете использовать анонимную функцию.
вот документация: http://php.net/manual/en/functions.anonymous.php
class A
{
public static $method;
}
A::$method = function() {
echo 'A';
};
call_user_func(A::$method);
// OR
$method = A::$method;
$method();
Других решений пока нет …