PHP中self和static的区别

今天闲来无事,突然有个朋友问我self和static的区别?那么好,就让我来跟大家解答一下这个问题。
self :它会调用当前类的方法;通俗来说,self就是写在哪个类里面, 实际调用的就是这个类的方法。
static(延迟静态绑定) :在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态。简单来说,延迟静态绑定意味着,当我们用static关键字调用一个继承方法时,它将在运行时绑定调用类。通俗来说,static代表使用的这个类,就是你在父类里写的static,然后被子类覆盖,使用的就是子类的方法或属性。

废话不多说,直接撸代码

php 复制代码
class Person {

    public static function name ($nickname) {
        echo $nickname;
    }

    public static function callSelf()
    {
        self::name('我是self里的nickname');
    }

    public static function callStatic()
    {
        static::name('我是static里的nickname');
    }
}


class Man extends Person {
    public static function name($nickname)
    {
        echo $nickname = '我是Man里的nickname';
    }
}


Man::callSelf(); // 输出: 我是self里的nickname
Man::callStatic();  // 输出: 我是Man里的nickname


注:如果将Man里的name注释掉,那么:Man::callStatic();将会调用父类里的name。 // 输出: 我是static里的nickname

好啦,以上就是slef和static的区别啦。如有不同理解,请多多指教。

相关推荐
bkspiderx19 小时前
C++中的map容器:键值对的有序管理与高效检索
开发语言·c++·stl·map
Hard but lovely19 小时前
Linux: 线程同步-- 基于条件变量 &&生产消费模型
linux·开发语言·c++
汤姆yu19 小时前
基于python大数据的协同过滤音乐推荐系统
大数据·开发语言·python
爱学习的小道长19 小时前
Python Emoji库的使用教程
开发语言·python
Sammyyyyy20 小时前
Symfony AI 正式发布,PHP 原生 AI 时代开启
开发语言·人工智能·后端·php·symfony·servbay
C+-C资深大佬20 小时前
C++逻辑运算
开发语言·c++·算法
掘根20 小时前
【仿Muduo库项目】EventLoop模块
java·开发语言
꧁Q༒ོγ꧂20 小时前
算法详解(三)--递归与分治
开发语言·c++·算法·排序算法
ganshenml20 小时前
【Android】 开发四角版本全解析:AS、AGP、Gradle 与 JDK 的配套关系
android·java·开发语言
我命由我1234520 小时前
Kotlin 运算符 - == 运算符与 === 运算符
android·java·开发语言·java-ee·kotlin·android studio·android-studio