静态关键字声明是与类相关的属性或方法,而不是类的特定实例。因此,这些属性或方法也称为类属性或类方法。

如果允许访问控制权限,则不必创建类对象,并直接使用带有两个冒号名称的类名:调用。

静态关键字可以用来修改变量和方法。

如果没有实例化,您可以直接访问类中静态属性和静态方法。

静态的属性和方法只能访问静态的属性和方法,不能访问非静态属性和方法。

静态的属性,内存中只有一个副本,所有实例都是共享的。

使用::访问当前类静态成员的关键字。
静态财产的公共性

类的所有实例,公共类中的静态属性。

也就是说,即使内存中有多个实例,也只有一个静态属性。

在下面的示例中,设置计数器计数器属性,设置私有和静态修饰符。这样,外部世界不直接访问$计数属性。

复制代码代码如下所示:
<
类用户{
私有静态值= 0;所有用户的日志记录。
公共功能__construct(){
自我::$ = =:1;
}
公共职能getCount(){
返回自我;
}
公共功能__destruct(){
自:$ = =:$ 1;
}
}
新用户user1 = $();
$ user2 =新用户();
用户2美元=新用户();
现在这里有回音。$ user1 -> getCount()。用户;

unset($ user3);
现在这里有回音。$ user1 -> getCount()。用户;
>


程序运行结果:



现在这里有3个用户
现在这里有2个用户
静态属性直接调用

静态属性可以直接使用,而不必实例化,并且可以在没有创建类时直接使用。

使用的方法是类名::静态属性名。
复制代码代码如下所示:
<
数学课堂{
公共静态$ = 3.14;

}
半径为3 /花园区域。
$ r=3;
半径的区域是$ ;
回声数学;


我认为3.14/这里不够准确,我把它定得更准确了。
数学::$ = 3.141592653589793;
半径的区域是$ ;
回声数学;
>


程序运行结果:





半径的区域是3。
二十八点26
半径的区域是3。
二十八点27433388 23

静态属性可以在没有创建类的情况下直接使用。静态属性是什么时候在内存中创建的看到PHP是不相关的信息,请参阅java的概念来解释,它还应该是普遍的。

在调用类时创建的静态属性和方法。调用一个类,这意味着创建一个类或调用某个类的任何静态成员。
静态方法

静态方法不需要实例化类,可以直接使用。

使用的方法是类名:静态方法名。

然后我们继续为数学计算写数学课,我们设计了一个计算它的最大值的方法,因为它是一个数学运算,我们不需要实例化这个类。如果使用这种方法,就会更方便。

我们只是为了演示静态方法而设计的这个类,max()函数在PHP中给出比较值。

复制代码代码如下所示:
<
数学课堂{

公共静态函数马克斯($ num1,num2美元){
返回num1 >美元美元美元num2 num1:num2;
}
}
$ = 99;
$ = 88;
显示最大值为$和$ ;

回声数学::马克斯($ A,B);
;;;;
$ = 99;
$ = 100;
显示最大值为$和$ ;

回声数学::马克斯($ A,B);
>


程序运行结果:

a和b中的最大值是
九十九
a和b中的最大值是
一百
静态方法如何调用静态方法

在第一个例子中,当静态方法调用其他静态方法时,类名直接使用。

复制代码代码如下所示:
<
以实现最大的 / 数学。
数学课堂{

公共静态函数马克斯($ num1,num2美元){
返回num1 >美元美元美元num2 num1:num2;
}
公共静态函数MAX3(美元美元美元num1,num2,小键盘数字3){
$ num1 =数学::马克斯($ num1,num2美元);
数学::马克斯= num2美元(约合num2,小键盘数字3美元);
$ num1 =数学::马克斯($ num1,num2美元);
返回num1;
}
}
$ = 99;
$ = 77;
$=88;
显示$ A中的最大值;

回波数学::MAX3($,$,$ C);
>


程序运行结果:



显示997788中的最大值是
九十九

还可以使用::调用当前类中的其他静态方法。

复制代码代码如下所示:
<
以实现最大的 / 数学。
数学课堂{

公共静态函数马克斯($ num1,num2美元){
返回num1 >美元美元美元num2 num1:num2;
}
公共静态函数MAX3(美元美元美元num1,num2,小键盘数字3){
num1 =自我::马克斯美元($ num1,num2美元);
num2 =自我::马克斯美元($ num2,小键盘数字3美元);
num1 =自我::马克斯美元($ num1,num2美元);
返回num1;
}
}
$ = 99;
$ = 77;
$=88;
显示$ A中的最大值;

回波数学::MAX3($,$,$ C);
>


程序运行结果:



显示997788中的最大值是
九十九
静态方法调用静态属性。

使用类名:静态属性名称调用类中的静态属性。
复制代码代码如下所示:
<

类圆{
公共静态$ = 3.14;

公共静态函数circleacreage(r){
返回$:*圆;
}
}
$ r=3;
半径为r的圆的面积为。圈::circleacreage(r);
>


程序运行结果:


半径为3的圆半径为28.26。

使用::调用这个类的静态属性。

复制代码代码如下所示:
<

类圆{
公共静态$ = 3.14;

公共静态函数circleacreage(r){
返回:自己:$ PI;
}
}
$ r=3;
半径为r的圆的面积为。圈::circleacreage(r);
>


程序运行结果:


半径为3的圆半径为28.26。
静态方法不能调用非静态属性。

静态方法不能调用非静态属性.不能使用:非静态属性被称为。

复制代码代码如下所示:
<

类圆{
公共$ pi = 3.14;

公共静态函数circleacreage(r){
返回:;
}
}
$ r=3;
半径为r的圆的面积为。圈::circleacreage(r);
>


程序运行结果:


致命错误:未定义的类constant'pi'in E:7号线PHPProjectstest.php

也可以不使用$来获取非静态属性的值。

复制代码代码如下所示:
<
/ /
类圆{
公共$ pi = 3.14;

公共静态函数circleacreage(r){
返回$ $ * r $ *;
}
}
$ r=3;
半径为r的圆的面积为。圈::circleacreage(r);
>


程序运行结果:


致命错误:使用美元当不在对象上下文:PHPProjectstest.php 7
静态方法调用非静态方法

在PHP5中,非静态方法不能使用美元的身份在一个静态方法调用。

复制代码代码如下所示:
<
以实现最大的 / 数学。
数学课堂{
公共函数马克斯($ num1,num2美元){
回声坏;
返回num1 >美元美元美元num2 num1:num2;
}
公共静态函数MAX3(美元美元美元num1,num2,小键盘数字3){
num1 =美元美元->马克斯($ num1,num2美元);
num2 =美元美元->马克斯($ num2,小键盘数字3美元);
num1 =美元美元->马克斯($ num1,num2美元);
返回num1;
}
}
$ = 99;
$ = 77;
$=188;
显示$ A中的最大值;

回波数学::MAX3($,$,$ C);
>


程序运行结果:

显示9977188中的最大值是
致命错误:使用美元当不在对象上下文:test.php 10

当类中的非静态方法由自己调用时:系统自动将方法转换为静态方法。

下面的代码被执行,并且有一个结果,因为马克斯方法被系统转换为静态方法。

复制代码代码如下所示:
<
以实现最大的 / 数学。
数学课堂{
公共函数马克斯($ num1,num2美元){
返回num1 >美元美元美元num2 num1:num2;
}
公共静态函数MAX3(美元美元美元num1,num2,小键盘数字3){
num1 =自我::马克斯美元($ num1,num2美元);
num2 =自我::马克斯美元($ num2,小键盘数字3美元);
num1 =自我::马克斯美元($ num1,num2美元);
返回num1;
}
}
$ = 99;
$ = 77;
$=188;
显示$ A中的最大值;

回波数学::MAX3($,$,$ C);
>


程序运行结果:



显示9977188中的最大值是
一百八十八

在下面的例子中,我们使用静态方法MAX3自::调用非静态方法的马克斯,让马克斯的非静态方法调用非静态属性PI通过美元美元。

在运行中,它报告了错误。这个错误是由于以前的例子3-1-9.php相同。这次是一个非静态的方法。马克斯报告了静态方法调用非静态属性的错误。

这就是我们定义的非静态方法马克斯的一个点,它被系统自动转换为静态方法。

复制代码代码如下所示:
<
以实现最大的 / 数学。
数学课堂{
公共$ pi = 3.14;

公共函数马克斯($ num1,num2美元){
回声:。
返回num1 >美元美元美元num2 num1:num2;
}
公共静态函数MAX3(美元美元美元num1,num2,小键盘数字3){
num1 =自我::马克斯美元($ num1,num2美元);
num2 =自我::马克斯美元($ num2,小键盘数字3美元);
num1 =自我::马克斯美元($ num1,num2美元);
返回num1;
}
}
$ = 99;
$ = 77;
$=188;
显示$ A中的最大值;

回波数学::MAX3($,$,$ C);
>


程序运行结果:



显示9977188中的最大值是
致命错误:访问声明静态属性:数学::$ PI E:PHPProjectstest.php 7