self::和static::的区别

在阅读一些框架的源码时发现了new static(),和new self(),甚是不解,后来查阅资料,才知道static采用了延迟绑定,能准确知道是父类还是子类的调用。这就是说static是个聪明的小孩,家里的亲戚的辈分他都能准确的叫出;而不是像他的兄弟self,只知道自己的亲爹妈。

例子如下:

<?php

classFather{

protectedstatic$name ="father";

publicstaticfunctionwhoami_self(){

echoself::$name."\n";

}

publicstaticfunctionwhoami_static(){

echostatic::$name."\n";

}

publicstaticfunctiongetInstance_self(){

returnnewself();

}

publicstaticfunctiongetInstance_static(){

returnnewstatic();

}

}

classFatherBrotherextendsFather{

protectedstatic$name ="uncle";

}

FatherBrother::whoami_self();//father

FatherBrother::whoami_static();//uncle

var_dump(FatherBrother::getInstance_self());//father

var_dump(var_dump(FatherBrother::getInstance_static()));//uncle

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/邹佩 一个人会不会说话,会不会说让人舒服的话,往往与智商、情商都没有关系,而是因为这类人不会控制自己的情绪,不...
    姵说阅读 2,823评论 0 2
  • 昨日家中亲戚来拜访,在僵硬漫长的饭局中熬完后回房间不小心睡着了,却被胃难受醒了。(友情提示:胃炎患者吃好东西尽量还...
    自律神经阅读 1,735评论 0 0
  • 亲爱的百合花: 现在是晚上十点,我刚从学校回来没一会,准备睡觉,突然觉得应该在毕业这天写点什么给你们,于是又从床上...
    百合花教主阅读 6,445评论 3 12
  • 当今社会,男女平等。教育资源平等,所以男生女生都有机会入读高等学府。 古人云“男大当婚,女大当嫁”,可为什么如今...
    岁月静好_2620阅读 3,229评论 0 0