static(静态)和非静态方法的区别

之前工作中,遇到一个多年的同事,聊到静态方法和非静态方法的区别?然后一脸懵逼,其实我也不晓得,然后默默的去查了一下,之后再工作中看到很多实用静态方法,嗯.....

就代码的规范看起来很不错,其次就是效率要比非静态要高,下面介绍一下优缺点。

1.什么时间静态方法?

定义静态方法方式:方法名前加static,如下

文件名Test.php

class testserver{

public statuic function server(){

return '返回的值';

}

}

调用:

Test::server();//输出:返回的值

(self::方法名)

2.什么是非静态方法?

这也是我们常用的

如下:

文件名Test.php

class testserver{

public function servers(){

return '返回的值';

}

}

Test->servers();//输出:返回的值

 

3.接下来再说明一下两者之间的优缺点:

A:静态方法或属性直接调用,静态方法或属性不需要实例化就可以直接使用,在类还没有创建时就可以直接使用。

B:静态方法效率上要比非静态方法要高,静态方法的缺点也很明显,就是不会进行自动销毁,而非静态方法(调用前需要实例化)可以销毁(总结:静态方法在使用的时候不用实例化,非静态方法则需要实例化,所以效率比较高)

C:静态方法和静态变量创建后始终使用同一块内存,而非静态方法的方式会创建多个内存

.............

(注:静态属性具体在什么时候被内存中被创建,php中并未看到相关资料,翻阅多种资料,有借助java的概念,即为在类被调用的时创建,还有另外一种说法,是在创建静态属性的时候会进行创建及分配内存,具体都不得而知,我觉得都有道理哈,二者选其一,我还是选择第二种)

(注1:深度优先,查询多种资料,犹豫静态和非静态的数据结构及安全性等方面也有关系,现在并未做过多的深入研究,如感兴趣的,可自行查阅资料了解)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值