0

假设我有一个类似以下的课程:

class MyClass {
  public function __construct($str) {
    // do some stuff including:
    $str = self::getIP($str);
  }

  private static function getIP($str) {
    return (bool) ip2long($str) ? $str : gethostbyname($str);
  }

  // other NON static functions ....
}

在上述情况下,getIP 静态与简单的优点/缺点是什么:

private function getIP($str) {
  return (bool) ip2long($str) ? $str : gethostbyname($str);
}

并调用$this->getIP();构造函数(或任何其他方法)

上下文:我通常会在没有 static 关键字的情况下执行此操作,但最近我遇到过几次。只是想知道当您绝对不打算使用它时使用静态是否有任何优势。

4

2 回答 2

2

在这种特殊情况下,我不确定。通常我使用静态方法,因为:

  • 它将数据存储在我希望从多个对象访问的静态变量中(有点像全局)
  • 我不想每次调用该方法时都必须创建对象的实例——尤其是当它主要是从外部调用时。

例如,我通常会创建一个 App 对象,它有许多辅助方法。其中之一是fetch_db。每次我想连接到数据库时,我都会调用App::fetch_db().

于 2012-09-18T23:36:43.027 回答
1

在这种特定情况下,没有优势或劣势。但是,静态方法可以被其他静态方法(可能是某些public static方法)使用。你确定它不是被另一个静态方法调用的吗?

$this从技术上讲,只要符合其接口,任何不依赖的方法都可以是静态的(例如,如果父方法依赖$this但子方法不依赖,则子方法不应该是静态的)。

于 2012-09-18T23:35:51.867 回答