最近做了一些代码审查我遇到了许多具有大量静态方法的类......我似乎无法理解为什么?因此我的问题是:
在PHP中使用静态方法的最佳做法是什么?
什么时候想要使用它们?什么时候不应该使用它们?
运行时处理静态方法的具体区别是什么?它们是否会影响性能或内存占用?
答案 0 :(得分:23)
最近进行了一些代码审查我遇到了许多具有大量静态方法的类......我似乎无法理解为什么
PHP在5.3之前没有名称空间,所以所有函数/变量都在全局范围内,除非它们属于某个类。将它们作为静态成员放在一个类中是一种没有命名空间的解决方法(这可能就是为什么你在“重要”数字中看到它们)
通常,它们用于在单个对象中没有多大用处的函数,但在类级别有一些用处(如其他答案所述)
答案 1 :(得分:6)
最佳做法是尽可能避免使用它们,因为它们会破坏可测试性和可维护性。精彩的两篇精彩内容:
澄清:在这个问题上似乎存在很多误解。缺乏依赖注入是真正的问题。直接调用静态方法恰好是陷入陷阱的最常见方式之一。
答案 2 :(得分:5)
静态方法用于
答案 3 :(得分:4)
静态方法不需要实例(并且可以返回一个实例)并且或多或少类似于全局函数,除非它被放在类的命名空间中(因此避免与其他函数冲突)并且可以访问类'私人成员。
因此,只要您对函数的这些属性感兴趣,就可以使用它。
答案 4 :(得分:3)
没有PHP特定的静态方法的使用。
可以直接在类上调用静态方法 - 不需要实例化对象。
因此,它们主要用于与类功能相关的方法,但不需要将现有实例用于其他代码。
一个常见的例子是自定义比较方法,可以传递给uasort()函数,以对类类型的对象数组进行排序。
答案 5 :(得分:2)
您可以使用静态方法获得更好的性能。 您不需要为使用Web App的每个用户创建对象,并且使用多种方法和属性创建对象的速度较慢,需要更多的系统资源。
答案 6 :(得分:1)
您无需创建类的实例即可使用其静态方法。