这篇文章给大家介绍静态方法与非静态方法在php中的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
在php编程中,静态关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”
如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。
静态关键字可以用来修饰变量,方法。
不经过实例化,就可以直接访问类中静态的属性和静态的方法。
静态的属性和方法,只能访问静态的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。
静态的属性,在内存中只有一份,为所有的实例共用。
使用self::关键字访问当前类的静态成员。
一个类的所有实例,共用类中的静态属性。
即在内存中即使有多个实例,静态的属性也只有一份。
例子,设置了一个计数器数美元属性,设置私人和静态修饰。
这样,外界并不能直接访问美元数属性。而程序运行的结果也看到多个实例在使用同一个静态的美元数属性。
& lt; ? php , class user {,, ,private static  count 美元;=,0,,,//记录所有用户的登录情况只, ,public function  __construct (), {,, 自我::$ count 才能=,self:: $ count +, 1,,, ,}, ,public function  getcount (), {,, return 才能;自我::$ count,,, ,}, ,public function  __destruct (), {,, 自我::$ count 才能=,self:: $ count 作用;1;,, ,}, },, $ user1 =, new 用户();,, $ user2 =, new 用户();,, $ user3 =, new 用户();,, echo “你here have “,只user1→美元getcount(),只“,user",,, echo “& lt; br /祝辞;“;,, 设置($ user3);,, echo “你here have “,只user1→美元getcount(),只“,user",,, ?在
二、静态属性直接调用
静态属性不需要实例化就可以直接使用,在类还没有创建时就可以直接使用。
使用方式:
类名::静态属性名
& lt; ? php , class math {,, ,public static  pi 美元;=,3.14;,, },,//,求一个半径3的园的面积只, r 美元;=,3,,, echo “半径是,r 美元;的面积是& lt; br /祝辞;“,,, echo 数学::$ pi *, r 美元;*,$ r;,, echo “& lt; br /祝辞& lt; br /祝辞;“,,,//这里我觉得,3.14,不够精确,我把它设置的更精确只, 数学::$ pi 3.141592653589793=,,,, echo “半径是,r 美元;的面积是& lt; br /祝辞;“,,, echo 数学::$ pi *, r 美元;*,$ r;,, 祝辞;
类没有创建,静态属性就可以直接使用。那静态属性在什么时候在内存中被创建?
在php中没有看到相关的资料。
引用java中的概念,来解释应该也具有通用性。静态属性和方法,在类被调用时创建。
三、静态方法
静态方法不需要所在类被实例化就可以直接使用。
使用的方式是类名::静态方法名
继续写这个数学类,用来进行数学计算。
设计一个方法用来算出其中的最大值。既然是数学运算,也没有必要去实例化这个类,如果这个方法可以拿过来就用就方便多了。
这只是为了演示静态方法而设计的这个类。在php提供了max()函数比较数值。
& lt; ? php , class math {,, ,public static  function 马克斯(num1美元,美元num2), {,, return 才能;num1 美元;祝辞,num2 美元;?,num1 美元;:,num2美元;,, ,},, },, a 美元;=,99,,, b 美元;=,88,,, echo “显示,a 美元;和,b 美元;中的最大值是,,,, echo “& lt; br /祝辞;“;,, echo 数学:马克斯(一个美元,,b),,, echo “& lt; br /祝辞,,, echo “& lt; br /祝辞,,, echo “& lt; br /祝辞;“;,, a 美元;=,99,,, b 美元;=,100,,, echo “显示,a 美元;和,b 美元;中的最大值是,,,, echo “& lt; br /祝辞;“;,, echo 数学:马克斯(a, b)美元;,, 祝辞;
静态方法如何调用静态方法