【发布时间】:2015-02-13 14:30:17
【问题描述】:
我们可以从外部改变一个类的静态变量值,这就是静态变量的优点,但是我们如何从外部改变静态方法呢?
<?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 */}
}
【问题讨论】:
-
你为什么要这个?
-
能够从类外部更改变量与静态无关,而是公开
-
至于能够更改变量.....这就是 variable 的全部意义......但函数不是变量,并且应该没有理由动态更改函数定义
-
如果您需要“动态”方法,请改用closures
-
@MarkBaker 我认为我们无法从外部更改类的公共变量值。只有静态变量可以更改,并且类将继续在该特定代码行中保存更改后的静态值。如果我错了,请纠正我。
标签: php oop static-methods