2010-01-19 91 views
0

可能重复:
When should I use static methods in a class and what are the benefits?静态函数/类..推理?

我在PHP工作现在。

我正在处理两组函数。

我有一个由日期处理函数组成的类。

在这个类中,我不需要属性,因为每个函数/方法或多或少都是一个实用程序。正因为如此,我使得我的班级的所有功能都是静态的。

我从这里有几个问题。

1)使用静态方法有什么好处?我知道有更低的处理开销,因为没有一个对象。我也听说这是微不足道(取决于)。

2)除了公用事业之外,还有哪些其他类型的功能/方法可以成为“静态”的好选择?

感谢

+2

请在下一次询问之前进行搜索: http://stackoverflow.com/questions/2080150/when-should-i-use-static-methods-in-a-class-and-what-are-the - 好处 http://stackoverflow.com/questions/1299712/why-should-we-use-static-calls-in-php http://stackoverflow.com/questions/1316800/when-to-use-static -modifier-in-php – hobodave 2010-01-19 21:33:19

+0

你的问题读起来就像你处于与PHP一样的开发/知识水平。不能推荐Kevin Skoglund的“PHP和MySQL - 超越基本” - 从Lynda.com相当便宜。真的帮助我理解公共/私人/静态方法的概念。 – suitedupgeek 2010-01-19 21:48:01

回答

5

采用静态方法的关键概念是它们绑定到类,而不是一个实例的类的。一个好的指导原则是**任何需要状态的东西都不适合静态使用*。

实用方法绝对适合静态使用,因为它们通常很短而且不需要任何状态。其他一些指导原则可能是:

  • 输入和输出不相互依赖任何东西。
  • 该方法没有上下文,也就是说,将它与对象的实例相关联是没有意义的。
  • 方法/变量不需要区分对象,只需要一个声明即可。这主要适用于静态类变量,例如跨所有实例化对象共享的计数器。