我不确定是否可以这样做,但我想我会问。由于长期,管理相关和无聊的原因......能够在类中的方法内更改声明为static
的变量非常有用。例如:
class Test{
function staticFunction() {
static $value = 'Hello, world!';
}
}
出于这个问题,我无法更改Test::staticFunction()
内的代码。因此,这不是可通过self::$value
访问的类变量,而是仅在此函数范围内定义的变量。有没有办法从方法范围之外更改$value
变量?
答案 0 :(得分:2)
答案 1 :(得分:1)
这应该指向正确的方向:
class Foo
{
public function bar( $param )
{
static $enigma = 'cogito ergo sum';
$enigma = $param;
}
}
$method = new ReflectionMethod( 'Foo', 'bar' );
var_dump( $method->getStaticVariables() );
$test = new Foo;
$test->bar( 'bar' );
$method = new ReflectionMethod( $test, 'bar' );
var_dump( $method->getStaticVariables() );
答案 2 :(得分:0)
函数体第一次执行时定义的静态变量。 在你的例子中:
static $value = 'Hello, world!';
变量$ value,其值为'Hello,world!'将在第一次调用函数时定义...其他时候调用函数时,此行将被忽略,直到脚本不会停止执行。当函数体将被执行时,静态变量保持其数据并且不会像局部变量一样被销毁。