给定以下代码,我正在寻找调用$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();
使用$this->myStaticFunction()
的缺点是:
- 它并不能清楚地表明你的意图(
->
表示你正在用一个对象做某事,,但你不是) - 它最终可能会调用一些你意想不到的东西
- 这可能会让读者感到困惑(读者可以肯定的是,作者不理解OO的基本原理)
- 这只是错误的:静态函数属于类,而不是对象。通过类(包括
self
)而不是对象来调用它们
唯一可能的pro是,您可能想要覆盖子类中的静态函数,但这表明该函数属于对象,而不是该类。在这种情况下,使用实例方法会更合适。