php什么场景使用静态,PHP编程开发中静态方法和实例化方法的使用场景

静态方法和实例化方法是PHP编程中经常出现的两种方法,一个是通过类直接调用,一个是先实例化一个类得到一个对象,然后再通过对象来调用。如下图所示:

c9619794ef2d1c8b610acb55176ddc43.png

「PHP编程」静态方法和实例化方法的使用场景,你真的了解吗?

虽然,我们一直这样使用,但我们真的知道,什么时候该使用静态方法,什么时候该使用实例化方法吗?

思考误区

通过平时与其他开发人员交流发现,在静态方法和实例化方法的使用上,存在几个思考误区:

1、静态方法常驻内存,实例方法不是,所以静态方法比实例方法效率高,但占内存。

事实上,静态方法和实例化方法在加载时机和占用内存上是一样的,在类第一次被使用时调用的速度基本上没有差别。

方法占不占用更多内存,和它是不是静态没什么关系。

2、静态方法在堆上分配内存,实例方法在堆栈上分配内存。

其实,所有的方法都不可能在堆或者堆栈上分配内存。实际上,方法作为代码是被加载到内存中特殊的代码区的,这个内存区域是不可写的。

类实例化后,其所有的信息,都保存在另外的区域里。

3、实例方法需要先创建实例才可以调用,比较麻烦;静态方法不用,比较简单。

实际上如果一个方法与他所在类的实例对象无关,那么它就应该是静态的,而不应该把它写成实例方法。所以所有的实例方法都与实例有关,既然与实例有关,那么创建实例就是必然的步骤,没有麻烦简单一说。

使用原则

1、从面向对象的角度上来说,在选择是使用实例化方法还是静态方法时,应该根据的是该方法和实例化对象是否具有逻辑上的相关性,如果有就应该使用实例化对象,反之,则使用静态方法。

2、如果从线程安全、性能、兼容性上来看,则选用实例化方法为宜。

总结

早期的结构化编程,几乎所有的方法都是“静态方法”,引入实例化方法概念是面向对象概念出现以后的事情了,区分静态方法和实例化方法不能单单从性能上去理解,创建c++,java,c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题。

拿别人一个例子说事:

比如说“人”这个类,每个人都有姓名、年龄、性别、身高等,这些属性就应该是非静态的,因为每个人都的这些属性都不相同;但人在生物学上属于哪个门哪个纲哪个目等,这个属性是属于整个人类,所以就应该是静态的——它不依赖与某个特定的人,不会有某个人是“脊椎动物门哺乳动物纲灵长目”而某个人却是“偶蹄目”的。

合肥达内PHP培训“互联网大牛”软件工程师课程为有志成为互联网软件“行业新贵”的学员精心打造,从第一天起就力求知识的“新”和“深”。不但及时更新互联网知识(如:Yii框架、HTML5、NoSQL、Bootstrap、LessCSS、Minify等),同时对基础知识要达到足够的深度(如:PHP核心函数库行业内全,MySQL行业内内容深入)。

每年有10W人选择达内,选择的人多,自然是好培训!我们的课程专为零基础打造,是学PHP必经之路!如果你想在2018年成为一名高薪PHP工程师,那就从参加合肥达内免费训练营开始吧!在线留言客服可免费试听,试听过后,学不学,你说了算。

*版权声明:转载文章和图片均来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值