【问题标题】:static in class declaration vs static in function类声明中的静态与函数中的静态
【发布时间】:2013-05-06 09:42:54
【问题描述】:
class A{

  static $var = true;

  function f(){

  }

}

class A{

  function f(){
    static $var = true;

  }
}

似乎没有任何区别。使用其中一个有什么优势吗?

请注意,$var 将仅用于f() 函数。我知道如果变量需要在多个函数中使用,则需要在类头中声明它

【问题讨论】:

    标签: php class static


    【解决方案1】:

    如果你只在f函数中使用静态变量,那么只有作用域的区别,也就是说只要你不尝试在其他地方使用它就没有区别。

    在本地范围内使用时,静态变量值在每个函数调用之间保留。请参阅this page 的静态变量部分。

    感谢 insertusernamehere 指出这一点。

    【讨论】:

    • 我还假设函数中的static $var 是一个逻辑错误,即使它是 PHP 引擎允许的
    • 这并不完全正确。函数中的静态变量缓存其值以供下次调用:“变量作用域的另一个重要特征是静态变量。静态变量仅存在于局部函数作用域中,但它确实存在当程序执行离开这个范围时不会失去它的价值。”,来自 PHP 手册:“Using static variables”。
    【解决方案2】:

    在后面的示例中,您只能在 f 函数中使用 var。另一个可以从类A::varA::var 之外的任何地方访问

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2011-07-08
      • 1970-01-01
      相关资源
      最近更新 更多