• PHP面向对象——静态属性和静态方法


    静态属性

    所谓静态属性,也就是这个属性对于这个类来说是唯一的,不管有多少个对象,只要它引用了一个静态对象,那么这些对象引用出来的值肯定是同一个。

    静态变量不能使用->这种箭头符号,而是使用::这种作用域符号。
    我们可以直接使用“类名::静态属性名”的格式访问静态属性。

    从内存上来看,静态属性和普通属性并不使用同一块内存,这也就决定了它天生就有一点特殊。

    静态属性是只会被初始化一次,之后的每次调用都会使用原来的值。
    例子:
    class star{
    static public $count=1;
    function __construct(){
    echo "这是第",self::$count;
    echo "次实例化","
    ";
    self::$count +=1;
    }
    }
    $xin=new star();
    $mao=new star();
    $xi=new star();

    在类的内部,我们使用 self::静态属性名 这种格式去访问它们。
    我们在构造函数中直接调用静态属性$count,而且每次该函数被调用的时候,同时执行一个自增操作,也就是次数加一。
    执行结果为:
    这是第1次实例化
    这是第2次实例化
    这是第3次实例化

    这里由于该属性是静态的,它只会被初始化一次,之后再次调用的时候就会变成自增。
    如果我们把相应的静态属性换成普通属性
    例子:
    class star{
    public $count=1;
    function __construct(){
    echo "这是第",$this->count;
    echo "次实例化","
    ";
    $this->count +=1;
    }
    }
    $xin=new star();
    $mao=new star();
    $xi=new star();
    执行结果为:
    这是第1次实例化
    这是第1次实例化
    这是第1次实例化

    普通属性在每次实例化的时候都会被重新赋值一次,也就是说$this->count 得到的结果始终是1,因为它被重新赋值了N次。


    静态方法

    所谓静态方法,就是这个方法是属于这个类的,我们可以在不实例化任何对象的时候调用它。
    对于静态方法我们要重点关注它的三个特点:
    1,如何声明一个静态方法
    2,如何去调用这个静态方法
    3,静态方法可以干什么不可以干什么

    class star{
    static function team($name){
    echo "队伍核心成员:";
    echo $name;
    echo "
    ";
    }
    }
    star::team("罐罐");
    $guan=new star();
    $guan->team("萌罐罐");

    输出结果为:
    队伍核心成员:罐罐
    队伍核心成员:萌罐罐

    1,声明定义一个静态函数很简单,它只需要在function前面加一个static关键字就可以了。
    2,调用静态方法可以使用 “类名::静态函数名”的格式去调用,也可以直接实例化一个变量,然后使用变量名->函数名的方法调用。
    3,由于静态方法不需要类的实例化就能够被调用,而普通方法和普通属性都必须先声明一个对象才可以访问,因此,在静态方法里面始终是不能使用普通方法和访问普通变量的。

    关于静态方法要牢牢记住一点:“静态方法是属于整个类的。”
  • 相关阅读:
    SVG绘制星空效果
    httpserver实现简单的上下文
    httpserver
    多协成利用互斥锁按顺序执行读取文件
    channel补充
    获取小程序的手机号
    php 简单加密解密
    goroutine channel
    json序列化和反序列化
    golang 命令行参数
  • 原文地址:https://www.cnblogs.com/suiyuewuxin/p/5608520.html
Copyright © 2020-2023  润新知