【问题标题】:PHP Calling a static functionPHP调用静态函数
【发布时间】:2013-08-12 20:59:35
【问题描述】:

鉴于以下代码,我正在寻找调用 $this->myStaticFunc(); 的优点和缺点; vs self::myStaticFunc();

class MyClass

  private function myPrivateFunc() {
    ...
    $this->myStaticFunc(); // or self::myStaticFunc();
    ...
  }

  // no need to tell me that i can't use $this in here
  public static function myStaticFunc() { ... }

}

// access static function
MyClass::myStaticFunc();

【问题讨论】:

  • 给你零信息,想知道我该买黑色还是蓝色车...
  • 它们的用途完全不同......如果你的函数需要针对实例工作,那么你将它称为实例函数;如果没有,那么你可以使用静态函数

标签: php static function-call


【解决方案1】:

使用$this->myStaticFunction() 的缺点是:

  • 它没有清楚地表明你的意图(-> 表明你正在对一个对象做某事,但你不是),
  • 它可能会调用一些你没想到的东西,
  • 这可能会让读者感到困惑(读者只能确定作者不了解基本的 OO 原理),
  • 这完全是错误:静态函数属于类,而不是对象。通过类(包括self)而不是对象来调用它们。

唯一可能的优点是您可能希望在子类中覆盖静态函数,但这表明该函数属于 object 而不是类。在这种情况下,使用实例方法会更合适。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多