静态关键字用法php

时间:2012-09-18 23:29:18

标签: php static static-methods

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

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 static与简单的优点/缺点是什么:

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

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

上下文:我通常会在没有static关键字的情况下执行此操作,但最近我遇到过这种情况。只是想知道在你肯定不打算使用静态时是否有使用静态的优势。

1 个答案:

答案 0 :(得分:1)

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

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