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的区别啦。如有不同理解,请多多指教。

相关推荐
Aurorar0rua1 小时前
CS50 x 2024 Notes C -14
c语言·开发语言·学习方法
小短腿的代码世界2 小时前
从.qrc到rcc编译器:Qt资源系统的隐秘运作机制与大型项目性能突围
开发语言·qt
2401_833269303 小时前
Java网络编程入门
java·开发语言
青瓦梦滋3 小时前
C++的IO流与STL的空间配置器
开发语言·c++
五月君_3 小时前
Bun v1.3.14 发布,Rust 版即将进 Claude Code 内测,下一版可能就告别 Zig
开发语言·后端·rust
鱼很腾apoc5 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
不吃土豆的马铃薯5 小时前
4.SGI STL 二级空间配置器 allocate 与_S_refill 源码解析
c语言·开发语言·c++·dreamweaver·内存池
码界筑梦坊6 小时前
120-基于Python的食品营养特征数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·fastapi
lsx2024066 小时前
《Foundation 模态框》
开发语言
fufu03116 小时前
vscode配置C/C++环境,用GDB调试简单程序分享
开发语言·c++