何时在 PHP 中使用静态修饰符

2022-08-30 13:25:00

最近做一些代码审查,我遇到了许多类,其中有大量的静态方法......我似乎不明白为什么?因此,我的问题:

在 PHP 中使用静态方法的最佳实践是什么?

什么时候想使用它们,什么时候不应该使用它们?

运行时处理静态方法的具体区别是什么?它们会影响性能或内存占用量吗?


答案 1

最近做一些代码审查,我遇到了许多类,其中有大量的静态方法......我似乎无法理解为什么

PHP在5.3之前没有命名空间,所以所有函数/变量都将在全局范围内,除非它们属于某个类。将它们作为静态成员放在类中是没有命名空间的解决方法(这可能就是为什么您看到它们的数量“有效”的原因)

通常,它们用于在单个对象中没有多大用处的函数,但在类级别有一些用处(如其他答案所述)。


答案 2

最佳做法是尽可能避免使用它们,因为它们会破坏可测试性和可维护性。两本精彩的读物,详细说明了:

澄清:在这个问题上似乎有很多误解。缺乏依赖注入是真正的问题。直接调用静态方法恰好是陷入该陷阱的最常见方法之一。


推荐