当在PHP中使用static修饰符(When to use static modifier in P

2019-07-03 12:21发布

做一些代码审查最近我碰到了一些有在他们的静态方法显著数类......我似乎无法把握,为什么? 因此,我的问题:

什么是在PHP中使用静态方法有关最佳做法?

一个何时需要使用它们的时候会一个人不应该使用它们?

什么是运行时如何处理静态方法的具体区别? 他们是否影响性能或内存占用?

Answer 1:

做一些代码审查最近我碰到了一些有在他们的静态方法显著数类......我似乎无法把握,为什么

PHP 5.3之前没有命名空间,所以所有的函数/变量将在全球范围内,除非它们在某些类属。 他们将在一个类的静态成员是没有命名空间的解决方法(这可能就是您在“显著”号看见他们)

一般情况下,它们用于不在单个对象很多有用的功能,但具有一流水平的一些使用(在其他的答案说的)



Answer 2:

最好的做法是避免使用它们只要有可能,因为他们杀的可测试性和可维护性。 两个伟大的读取说明一下:

  • 静认为是有害的
  • 静态方法是死可测性

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



Answer 3:

静态方法用于

  • 这都涉及到给定的类的对象的整个集合功能(如单件模式 )
  • 这是不相关的东西,但功能必须因为OO的类下把(如工具类)


Answer 4:

静态方法不需要实例(并可能返回一个代替),并或多或少相似,但它放在类全局函数命名空间(并因此避免与其他职能的冲突),并可以访问类的私有成员。

所以,当你感兴趣的函数的这些特性使用它。



Answer 5:

有具体介绍一下使用的静态方法没什么PHP。

静态方法可以直接在类调用 - 无需实例化对象。

因此,他们的主要用途是对于那些涉及到类的功能,但不需要现有的实例是使用了其他代码的方法。

一个常见的例子是可以传递到,比方说,uasort()函数来排序类的类型的对象的阵列的自定义比较方法。



Answer 6:

你可以使用静态方法获得更好的性能。 你不需要为使用Web应用程序和创建具有多种方法和属性的对象是慢,需要更多的系统资源,每个用户创建对象。



Answer 7:

你并不需要创建类的实例即可使用其静态方法。



文章来源: When to use static modifier in PHP
标签: php oop static