PHP静态方法与非静态方法用法及区别
admin
2023-06-12 08:22:25
0

1、用static关键字来修饰类的属性、方法,称这些属性、方法为静态属性、静态方法;
static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法"。静态类不是不可以实例化,而是不需要实例化就可以用。

2、设计静态方法的目的是为了不用实例化对象直接用类名快速调用。

3、static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。

4、非静态方法可以访问类中的任何成员(包括静态),变量名||方法名前面不需要加上$。访问静态属性和方法,使用self::方法||属性

5、static内部只能出现static变量和其他static方法(即静态方法不能调用非静态属性 。也不能使用self::调用非静态属性)!而且static方法中还不能使用this等关键字,因为它是属于整个类。静态方法内部调用其他静态方法,可以使用self::方法名称的形式来实现;使用self:: 静态变量名访问当前类的静态成员,变量名前面需要加上$,方法名前面不需要加上$

6、静态方法中,$this伪变量不允许使用,可以使用self,parent在内部调用静态方法与属性。

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

class User{
    private static $count = 0;

    public function __construct(){
        self::$count +=1;
    }
    public function getCount(){
        return self::$count;
    }

}
    $user1 = new User();
    $user2 = new User();
    $user3 = new User();
    echo $user1->getCount();  //3

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

class Star{
    public static function getName($name){
        return '队员姓名'.$name;
    }
}
echo Star::getName('kate');  //队员姓名kate
$star = new Star();
echo $star->getName('jim');  //队员姓名jim

相关内容

热门资讯

国家两部门:开展矿山机器人应用... 国家矿山安全监察局综合司 工业和信息化部办公厅关于开展矿山机器人应用验证试点工作的通知 国家矿山安全...
打造“终身学习之城”,杭州积极... 潮新闻客户端 记者 徐婷 俞刘东 通讯员 许慧敏 人工智能时代日新月异,培养适应时代生存发展的人才,...
荣耀平板20问世 内置1010... 【CNMO科技消息】5月25日晚间,CNMO科技注意到,荣耀平板20已正式发布,新品首销价1899元...
华为芯片破局!五年干到1.4n... 说起何庭波这个名字,想必各位IT之家家友是既熟悉又陌生。 熟悉在于她坐拥华为公司董事、半导体业务部总...
美加州故障化学品储罐爆炸风险排... 新华社洛杉矶5月25日电(记者高山 谭晶晶)美国加利福尼亚州奥兰治县官员25日说,当地此前发生泄漏的...
雷军:小米汽车电池安全测试项目... 来源:环球网 【环球网科技综合报道】5月25日消息,小米创办人、董事长兼 CEO 雷军发布了小米汽...
2026续航“顶级”的全能旗舰... 要说近两年手机行业感知最强的技术进步,电池肯定算一个,毕竟今年连影像旗舰和小屏机都能把电池堆到700...
在德国失联的23岁中国留学生,... 近日,有网友发帖称,一名23岁中国男留学生在德国失联数日,其家属正在紧急寻人,引发关注。据极目新闻报...
美光HBM4增产进展顺利,HB... IT之家 5 月 25 日消息,据韩媒 The Elec 今日报道,美光科技第六代高带宽内存 HBM...
AIROBO正式发布“冲刺全球... 全球机器人产业,正在经历一次比“智能手机时代”更深层的产业迁移。 过去十年,机器人行业的竞争核心始终...