假设我有类似以下的课程:
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关键字的情况下执行此操作,但最近我遇到过这种情况。只是想知道在你肯定不打算使用静态时是否有使用静态的优势。
答案 0 :(得分:1)
在这种特定情况下,没有优点或缺点。但是,静态方法可以被其他静态方法使用(可能是一些public static
方法)。你确定它没有被另一个静态方法调用吗?
从技术上讲,任何不依赖于$this
的方法都可以是静态的,只要它符合它的接口(例如,如果父方法依赖于$this
但子方法不依赖{child}方法不应该是静态的。)