【问题标题】:PHP – Change static variable in methodPHP – 更改方法中的静态变量
【发布时间】:2018-06-11 09:16:52
【问题描述】:

我需要更改方法中的静态变量。代码如下所示:

function get_something()
{
    static $cache = array();
    if (!$cache) {
        $cache = $this->compute_cache();
    }
    return $cache;
}

我可以获得 value 的副本。

$reflection = new ReflectionMethod($object, 'get_something');
$vars = $reflection->getStaticVariables();

有没有办法改变方法中的值?

附言
我无法更改该方法的代码。

【问题讨论】:

  • 不,这是不可能的。

标签: php variables static


【解决方案1】:

不,您不能更改方法中的静态变量。它们是方法私有的。

但是,如果您将 $cache 定义为类中的静态变量,而不是方法,您将能够访问它。

例如

class A {
  static $cache;
}

$object = new A();
$object::$cache = 33;
echo $object::$cache;

【讨论】:

  • 那你能不能创建一个类来扩展$object的行为,让$cache可以访问?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多