PHP中self和static的区别

这篇具有很好参考价值的文章主要介绍了PHP中self和static的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天闲来无事,突然有个朋友问我self和static的区别?那么好,就让我来跟大家解答一下这个问题。

self :它会调用当前类的方法;通俗来说,self就是写在哪个类里面, 实际调用的就是这个类的方法。

static(延迟静态绑定):在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态。简单来说,延迟静态绑定意味着,当我们用static关键字调用一个继承方法时,它将在运行时绑定调用类。通俗来说,static代表使用的这个类,就是你在父类里写的static,然后被子类覆盖,使用的就是子类的方法或属性。

废话不多说,直接撸代码

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的区别啦。如有不同理解,请多多指教。文章来源地址https://www.toymoban.com/news/detail-591553.html

到了这里,关于PHP中self和static的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全面对比 Python、Go、VB、PHP、C/C++、C#、.Net、Java、… 等多种编程语言的区别

    1. 语言类型: 首先,C/C++、Java 、Python都是 强类型 的语言。强类型语言的定义如下: 强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,

    2024年02月03日
    浏览(60)
  • php基础学习之分支结构和循环结构(不细讲,来对比一下和两大常用高级编程语言(C++/Java)的细微区别以便记忆)

    编程语言常见分支结构有: if 语句 if-else 语句 if-elseif-else 语句 switch 语句 其中, 除了 if-elseif-else 语句外,另外3中分支语句在php中和C++/Java是一模一样的! 而 if-elseif-else 的唯一不同点就在,【 elseif 】这个既可以合一起写(C++/Java不可以),也可以拆开写成【 else if

    2024年02月19日
    浏览(48)
  • PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别

    PHP CGI、FastCGI、PHP-FPM、PHP-CGI 是不同的PHP执行方式和处理程序。它们有以下区别: PHP CGI (Common Gateway Interface):PHP CGI是一种通过CGI协议与Web服务器通信的PHP执行方式。在每次请求时,Web服务器会将请求传递给PHP解释器,PHP解释器会解析并执行PHP脚本,并将结果返回给Web服务器

    2024年02月11日
    浏览(46)
  • 【PHP面试题44】PHP5的版本和PHP7之间有哪些区别

    本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题, 对标资深工程师/架构师序列 ,欢迎大家提前关注锁定。 PHP7相比与PHP5有比较大的调整,它们之间有很多区别。本篇博文将介绍PHP5和PHP7在底层调整和应用层上的主要区别。 PHP7相较于PHP5有

    2024年02月16日
    浏览(59)
  • PHP从入门到精通—PHP开发入门-PHP概述、PHP开发环境搭建、PHP开发环境搭建、第一个PHP程序、PHP开发流程

    每开始学习一门语言,都要了解这门语言和进行开发环境的搭建。同样,学生开始PHP学习之前,首先要了解这门语言的历史、语言优势等内容以及了解开发环境的搭建。 PHP概述 Ø 认识PHP PHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一个简单程序。这个程序用来显

    2024年02月14日
    浏览(65)
  • PHP之sleep() 与 usleep() 的区别

    PHP中的 sleep() 和 usleep() 函数都是用于暂停脚本执行的函数,但它们之间有一些区别: sleep() 函数: sleep() 函数用于在脚本中暂停指定的秒数。它接受一个参数,表示需要暂停的秒数,可以是整数或浮点数。在调用 sleep() 函数后,脚本将被阻塞指定的时间,然后再继续执行下一

    2024年02月06日
    浏览(39)
  • PHP两个三元运算符“??” 和“?:”的用法和区别

    在PHP 7中,有两个类似的语法结构:“??”和“?:”,它们都是用于处理条件判断和返回值的运算符。尽管它们看起来相似,但它们的作用和用法有一些区别。 \\\"?:\\\"是三目运算符,语法格式为:$result = $test ? t e s t : ′ ′ ; 意思就是当 test:\\\'\\\';意思就是当 t es t : ′′ ; 意思就是当

    2024年03月17日
    浏览(47)
  • php isset和array_key_exists区别

    在PHP中,可以使用 array_key_exists 函数或者 isset 函数来判断一个字典(关联数组)中是否存在某个下标。 使用 array_key_exists 函数: 2. 使用 isset 函数: 两种方法都可以用来判断数组中是否存在指定的下标。 array_key_exists 明确检查数组中是否存在指定的键, 而 isset 不仅检查键是否

    2024年01月20日
    浏览(35)
  • Java反序列化和PHP反序列化的区别

    反序列化存在的意义是为了数据传输,类是无法直接进行传输的。通过序列化后转换为字符串格式或者JSON格式进行传输 。 序列化与反序列化 seriallization 序列化 : 将对象转化为便于传输的格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。 deseriall

    2024年02月07日
    浏览(39)
  • PHP语言基础

    🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 前言 一、变量和数据类型 二、运算符和表达式 三、条件语句 四、循环语句 PHP是一种非常流行的开源服务器端脚本语言,广泛用于Web开发。它可以与HTML、CSS和JavaScript配合使用,以动态生成内容。

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包