数码资讯
PHP面向对象的旅程:深入理解静态变量和方法
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
静态关键字声明是与类相关的属性或方法,而不是类的特定实例。因此,这些属性或方法也称为类属性或类方法。
如果允许访问控制权限,则不必创建类对象,并直接使用带有两个冒号名称的类名:调用。
静态关键字可以用来修改变量和方法。
如果没有实例化,您可以直接访问类中静态属性和静态方法。
静态的属性和方法只能访问静态的属性和方法,不能访问非静态属性和方法。
静态的属性,内存中只有一个副本,所有实例都是共享的。
使用::访问当前类静态成员的关键字。
静态财产的公共性
类的所有实例,公共类中的静态属性。
也就是说,即使内存中有多个实例,也只有一个静态属性。
在下面的示例中,设置计数器计数器属性,设置私有和静态修饰符。这样,外部世界不直接访问$计数属性。
复制代码代码如下所示:
<
类用户{
私有静态值= 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
如果允许访问控制权限,则不必创建类对象,并直接使用带有两个冒号名称的类名:调用。
静态关键字可以用来修改变量和方法。
如果没有实例化,您可以直接访问类中静态属性和静态方法。
静态的属性和方法只能访问静态的属性和方法,不能访问非静态属性和方法。
静态的属性,内存中只有一个副本,所有实例都是共享的。
使用::访问当前类静态成员的关键字。
静态财产的公共性
类的所有实例,公共类中的静态属性。
也就是说,即使内存中有多个实例,也只有一个静态属性。
在下面的示例中,设置计数器计数器属性,设置私有和静态修饰符。这样,外部世界不直接访问$计数属性。
复制代码代码如下所示:
<
类用户{
私有静态值= 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
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。