PHP不像java, 对象的生命周期极短, 实例化没有意义,对嘛?

代码没有一个实例,全是静态方法调用,这样有什么好处和坏处?
PHP不像java, 对象的生命周期极短, 实例化没有意义,对嘛?

阅读 6.3k
9 个回答

对象并不是用来提升性能的。

面向对象是一种开发方式。
解决一个问题最好的方式就是将它抽象成一个通用的解决方案,然后用对象来完成方案的细节的封装。

全是静态方法太占用内存啦。。优点就是调用会快点。
PHP生命周期短是由于有垃圾回收机制,你也可以不用这个机制。

大家都说了理论上的东西了,那我就说点实际场景的。

PHP搞面向对象,我找到的两种非常有用的场景:

一种是功能极为单一且会在大量不同场景下使用到的模块,用面向对象方法会非常容易移植。虽说直接写个函数也可以,但是就会有不确定性的冲突问题,而实例化不仅调用简单,而且文档好写,冲突好解决。举例子来讲的话,可以参考IPIP的免费版PHP接口。

另一种是PHP框架,这种情况下类和对象复用率极高。

因为PHP大部分情况下面对的问题都很唯一,所以复用率会比较低,所以PHP也不是非常面向对象的语言。

静态调用更快点

实例扩展性好点,静态速度快

代码没有一个实例,全是静态方法调用

那是因为 php 以前就没有 OO 那套东西。有毛好处,就是简陋。

PHP不像java, 对象的生命周期极短, 实例化没有意义,对嘛?

那看什么对象,如何设计, web 场景下, java 如果处理每个请求都实例化一下,一样生命周期极短。

短不短取决于你怎么用它,如果你打算用来跑swoole之类在cli下运行的脚本,然后又用一堆静态方法静态属性甚至一堆单例,立马就可以坑到你没脾气。
OO最重要的用途是抽象,如果全是静态方法静态属性,那干嘛不用命名空间 + 函数 + 静态变量,要是闭包再用的6一点,变量照样可以隐藏起来实现模块化,但是那样看起来更像是在写c语言

新手上路,请多包涵

对象化最大的好处是利于扩展,当然执行上就没有静态化调用来的快,两者取中间点,具体看你的业务需求

这样讲的话,python,lua都不需要实例化了,毕竟生命周期也很短。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏