PHP中什么是静态以及静态属性和静态方法是什么意思

发布时间:2021-07-10 09:45:31 作者:chen
来源:亿速云 阅读:153

本篇内容主要讲解“PHP中什么是静态以及静态属性和静态方法是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中什么是静态以及静态属性和静态方法是什么意思”吧!

静态是什么?

我们之前讲到, 调用成员变量和方法, 都需要用到对象. 但如果我们不想实例化, 直接访问变量和方法呢? 这就用到了静态static功能.

在定义变量和方法的时候, 在前面加上static关键词, 就转化为了静态, 就可以通过类名::双引号直接进行访问.

我们继续将上面的例子改写为静态变量和静态方法:

class Classname          //定义一个类, 类名不区分大小写
{
static public $name;      //定义静态成员变量;
static public $height=180;    //初始化赋值
static public $weight, $nationality; //可以一个语句定义多个变量
static protected $age;

static public function player($name,$height, $weight, $age, $sex)
{                    //定义静态成员方法, 以及方法形参
    self::$name=$name;                 //为成员变量赋值, 使用了代词self::
    self::$weight=$weight;
    self::$height=$height;

    if (self::$height<185 && self::$weight<=85){
        return self::$name.',符合要求';
    }else{
        return self::$name.',不太行';
    }
}
}
echo Classname::$height;              //180, 通过类名::访问静态变量
echo Classname::player('xiaoming',180,80,22, 'Male');  //通过类名::访问静态方法;

上面的例子可以注意到, 我将所有的$this都换成了self. 因为$this指代的是调用对象, 而self指代的方法所在的类本身. 静态方法可以通过类名::直接调用, 这里没有对象, \$this指代的就为空, 系统就会报错. 所以静态方法内调用变量, 不能通过$this.

注意self::后面的变量要有$符号.

静态的本质

不要小瞧这个static, 加上了它, 其实不只是可以直接调用这么简单, 成员变量和方法的意义发生了本质上的变化:

在静态方法中只能调用静态变量, 而不能调用普通变量, 普通方法则可以调用静态变量. 这是由静态方法的属性决定的, 因为普通的成员变量是与"对象"绑定的, 而静态变量是与"类"绑定的.

我再详细解释一下静态变量和普通变量的区别:

我们举个例子:

class Shouji
{
    static public $test;           //定义一个静态变量
    static function test5()        //定义静态方法来操作并输出静态变量
    {
        self::$test++;
        echo self::$test;
    }
}
class Shouji2 extends  Shouji          //定义一个子类
{
    static function test5()           //定义子类的静态方法
    {
        self::$test++;                 //访问并操作父类的静态变量
        echo self::$test;
    }
}
$shouji1=new Shouji;               //新建父类对象
$shouji1->test5();     //1, 通过对象调用静态方法
$shouji2=new Shouji;   //新建另一个父类对象
$shouji2->test5();    //2,  在前一次操作基础上继续+1
$shouji3=new Shouji2;    //新建子类对象
$shouji3->test5();    //3, 调用子类同名静态方法, 继续+1
echo Shouji::$test;    //3, 通过父类::直接访问静态成员变量
echo $shouji1::$test;   //3, 通过对象名::可以直接访问静态成员变量

通过上面这个例子, 我们还能有以下几点总结:

到此,相信大家对“PHP中什么是静态以及静态属性和静态方法是什么意思”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 为什么​java中的静态属性和静态方法可以被继承?
  2. php中怎样调用静态属性和静态方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:php中如何删除图片文件

下一篇:php中return的用法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》