​再谈PHP中的self与static

再谈PHP中的self与static

之前的文章中有介绍过self、static和parent的传递问题。今天,通过一个小实验,我们来看看self和static操作变量的问题。

class A
{
public static $name = "I'm A!";

public function selfName()
{
echo self::$name;
}

public function staticName()
{
echo static::$name;
}
}

class B extends A{
public static $name = "I'm B!";
}

$b = new B();
$b->selfName(); // I'm A!
$b->staticName(); // I'm B!

class C extends A{
public static $name = "I'm C!";

public function selfName()
{
echo self::$name;
}
}

$c = new C();
$c->selfName(); // I'm C!
$c->staticName(); // I'm C!

通过这个简单的例子,我们可以看出两点:

  1. self写在哪个类里面,它固定指向的就是当前的这个类
  2. static就是哪个对象调用它,它指向的就是这个调用者

从代码中我们可以看出,B类没有重写selfName()方法,所以B类调用selfName()时调用的是父类A的selfName()方法,self在这个方法中指向的是A类。而C类重写了父类的selfName()方法,在调用C类的selfName()时,这里面的self指向的便是C类自己了。

static就比较简单了,例子中都是由B类和C类来调用的A类的staticName()方法,根据谁调用就指向谁来看,输出的结果符合我们的预期,B类对象指向的是B类,C类对象指向的是C类。

我们也可以转而理解为self是个常量,写在哪里就不会变了,它就是指明当前这个类。而static是个变量,哪个类用到它了它就被赋值成调用它的这个类。

测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201912/source/%E5%86%8D%E8%B0%88PHP%E4%B8%AD%E7%9A%84self%E4%B8%8Estatic.php

参考文档:https://www.cnblogs.com/mr-amazing/p/5953227.htmlhttps://www.php.net/manual/zh/language.oop5.constants.php

(0)

相关推荐

  • PHP共享内存yac操作类

    <?php /**  * 进程间共享内存操作类  */ class Pshmop {     protected static $_models = array();     private $ ...

  • [PHP小课堂]再谈PHP中的self与static

    [PHP小课堂]再谈PHP中的self与static 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习 ...

  • 再谈对联中的“合掌”

    李林森 关于合掌,<联斋>微刊第124期曾刊发过我的拙作<浅谈对联中的合掌>,文中作过比较详尽的叙述.(注:2018年12月26日<中国楹联报><中华楹联报& ...

  • 李林森‖再谈对联中的“合掌”

    再谈对联中的"合掌" 再谈对联中的"合掌" 李林森 关于合掌,<联斋>微刊第124期曾刊发过我的拙作<浅谈对联中的合掌>,文中作过比较详 ...

  • 再谈备课中的学法设计——备课杂谈之十一

    (图片选自网络)  再谈备课中的学法设计 --备课杂谈之十一 (2021101) 袁建国       昨天的文章中(链接<备课中设计学法的要素有哪些?--备课杂谈之十>)谈了备课中设计学法 ...

  • 民俗漫谈-清明节再谈祭祖中的鬼文化和阴宅风水

    一.清明节再现鬼文化 2021年的清明节是4月5日,面对我国安全管理的严峻形势,我在集团公司值班. 上午10:00左右的时候,我到各车间巡查生产安全的情况,遇到一位员工,他半开玩笑似地对我说:&quo ...

  • 再谈搜索中的Query扩展技术

    文章作者:丁香园大数据NLP 内容来源:丁香园大数据 导读:这一期我们继续来聊Query扩展的问题,在上一期我们梳理了目前Query扩展技术可以大致分为相关性建模和翻译模型建模两种思路. 搜索中的Qu ...

  • 再谈行文中遇到的逻辑错误怎么改?(附案例)

    全文字数:2200 字 预计阅读时间:5 分钟 前不久,<行文中遇到这些逻辑错误该怎么改?(附案例)>一文曾为大家介绍了一些"概念与判断"类逻辑差错的修改方法.本期分享 ...

  • 奔赴高塘会同门,再谈中定说练法

    虽然小珠只是陪同,但会场的气氛也让小珠心里默默为轩源捏一把汗.这两晚的讲课虽然圆满成功,心里的莫名紧张却不能随之散去,人虽然疲累,却越是这样越不容易睡着,睡着了也容易醒来. 这不,就醒了.窗外天色还是 ...

  • 郑爽再谈理想对象,在感情中,女人不怕失败,最怕“前任”

    你有故事,欢迎来找我 关注并私信我,一起解决感情纷扰 作者:梦鹿 原创作品,抄袭必究 (1) 郑爽在娱乐圈一直和她的名字一样,爽朗毫无掩饰. 在最近一期的<拜托了冰箱>中,聊天的轻松和舒适 ...