静态方法与非静态方法在php中的区别是什么

  介绍

这篇文章给大家介绍静态方法与非静态方法在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)美元;,,   祝辞;

静态方法如何调用静态方法

静态方法与非静态方法在php中的区别是什么