如何在php外部改变静态方法

时间:2015-02-13 14:30:18

标签: php oop static-methods

我们可以从外部更改类的静态变量值,这就是静态变量的优点,但我们如何从外部更改静态方法?

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

}

1 个答案:

答案 0 :(得分:2)

正如@Mark Ba​​ker所说,你只能改变变量...... 但是有一种方法可以将变量声明为可调用,你可以使用匿名函数。

这里是文档: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();