我们可以从外部更改类的静态变量值,这就是静态变量的优点,但我们如何从外部更改静态方法?
<?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 :(得分:2)
正如@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();