oop — как изменить статический метод в php вне класса

Мы можем изменить значение статической переменной класса извне, в этом преимущество статических переменных, но как мы можем изменить статический метод извне?

<?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 */}

}

0

Решение

Как сказал @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();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]