之前工作中,遇到一个多年的同事,聊到静态方法和非静态方法的区别?然后一脸懵逼,其实我也不晓得,然后默默的去查了一下,之后再工作中看到很多实用静态方法,嗯.....
就代码的规范看起来很不错,其次就是效率要比非静态要高,下面介绍一下优缺点。
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:深度优先,查询多种资料,犹豫静态和非静态的数据结构及安全性等方面也有关系,现在并未做过多的深入研究,如感兴趣的,可自行查阅资料了解)