为什么我应该使用public static / private static函数而不是public / private函数?涉及到IT技术。

7

我想知道使用public static function或者private static function相较于仅使用public function或者private function有哪些优势?


这不是优劣的问题。另外,你有在网站上搜索过吗? - BoltClock
4
使用静态方法时不需要创建对象。还有许多相关的问题! - meze
是的,我在阅读PHP手册网站上的一些内容,但我似乎不明白为什么要使用静态方法,我只明白了可以用::代替->来调用公共函数,以及在PHP手册网站上阅读到的有关静态方法的其他信息... - Roland
@Roland 这个问题更多地涉及面向对象的范式本身,而不是特定语言。因此,你最好阅读一份关于静态方法的介绍。 - jensgram
1
尽管这个问题已经关闭,但这是我在谷歌搜索中找到的第一件事,以回答我关于 PHP 中静态和非静态类函数区别的问题。感谢 @meze。 - jdstankosky
1个回答

22
"普通"方法(通常称为实例方法)是在类的实例上调用的。该方法始终可以通过$this访问其对象,因此它可以使用由该对象携带的数据(并且修改它)。这是面向对象编程的核心方面,也是使类不仅仅是一堆数据的原因。
另一方面,对静态方法的调用与特定对象无关。在这方面,它们的行为就像常规函数;实际上唯一的区别是它们可以标记为private并且还可以访问自己类的实例上的私有方法和变量。静态函数实际上只是过程式编程的扩展。
例如,实例方法是在对象上调用的:
$object = new MyClass();
$result = $object->myInstanceMethod();
一个静态方法是在类本身上调用的:
$result = MyClass::myStaticMethod();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接