当前位置:  开发笔记 > 编程语言 > 正文

PHP:Namespace中的Class vs Global函数中的静态方法?

如何解决《PHP:Namespace中的ClassvsGlobal函数中的静态方法?》经验,为你挑选了1个好方法。

在命名空间中创建全局函数(并从全局命名空间调用它)之间的区别是什么:



并创建一个静态类方法,并从全局命名空间调用?:



是否有理由更喜欢一种方法而不是另一种方法?



1> DCrystal..:

是否有理由更喜欢一种方法而不是另一种方法?

(下面假设你要求/引用静态类方法和命名空间中的函数之间的区别)

历史上(在命名空间到达之前),人们被迫使用具有静态函数的类来不污染全局命名空间.这是您可能更频繁地遇到此方法的原因之一.

如果您需要访问类的数据,或者您想要在后代类中覆盖它们(所谓的"灵活性和功能性"),您可能更喜欢使用静态方法.

当你想要的只是......呃,嗯......一个函数时,你可能更喜欢命名空间函数.想想一些util,functional或collections函数,比如compose/partial,retry,filter/map/some/every等.你可能不希望在子类中覆盖它,对吧?它既不需要访问某些静态类成员.

但是,(命名空间)函数存在一个特别恼人的问题,即类不会受到影响.它是自动加载的.简而言之,目前无法自动加载功能.这是你可能在实践中经常遇到静态方法(当它们不一定需要时)的类的另一个原因.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有