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

2021/01/14 08:21 · php ·  · 0评论

最近,我在做一些代码审查时遇到了许多类,其中包含大量静态方法……而我似乎无法理解为什么?因此,我的问题是:

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

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

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

最近进行一些代码审查时,我遇到了许多类,其中包含大量静态方法……而我似乎无法理解为什么

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

通常,它们用于在单个对象中用处不大的功能,但在类级别上有一些用途(如其他答案所述)

最佳实践是尽可能避免使用它们,因为它们会破坏可测试性和可维护性。精心撰写的两篇精彩读物:

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

静态方法用于

  • 与给定类的对象的整个集合有关的函数(例如,单例模式
  • 与任何事物都不相关,但由于OO而必须置于一个类下的函数(例如,实用程序类)

静态方法不需要实例(并且可以返回一个实例),并且或多或少类似于全局函数,只是它被放在类的名称空间中(因此避免与其他函数冲突)并且可以访问类的私有成员。 。

因此,只要您对函数的这些属性感兴趣,就可以使用它。

PHP没有关于使用静态方法的特定说明。

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

因此,它们的主要用途是用于与类功能相关的方法,但不需要现有实例可用于其他代码。

一个常见的示例是自定义比较方法,该方法可以传递给uasort()函数以对类类型的对象数组进行排序。

您可以使用静态方法以获得更好的性能。您不需要为每个使用Web App的用户创建对象以及使用多种方法和属性创建对象的速度较慢,并且需要更多的系统资源。

您无需创建类的实例即可使用其静态方法。

本文地址:http://php.askforanswer.com/heshizaiphpzhongshiyongjingtaixiushifu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!