加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP new static 和 new self区别

发布时间:2020-05-25 02:17:48 所属栏目:PHP 来源:互联网
导读:php self 返回的是 new self 中关键字 new 所在的类中,static 则上面的基础上,更聪明一点点:static 会返回执行 new static() 的类。本文章向大家介绍PHP new static 和 new self区别,需要的朋友可以参考一下。

最近在一个视频的评论被问到一个小问题:这里选择用static 而不是self有特殊的考虑么?或者我们可以这样转换一下问题:

PHP 的 new static 和 new self 具体有什么?

视频地址https://www.laravist.com/seri...

其实这个来看一个例子应该就很清晰了:

class Father {

public static function getSelf() {

return new self();

}

public static function getStatic() {

return new static();

}

}

class Son extends Father {}

// http://www.manongjc.com/article/1632.html

echo get_class(Son::getSelf()); // Father

echo get_class(Son::getStatic()); // Son

echo get_class(Father::getSelf()); // Father

echo get_class(Father::getStatic()); // Father

这里面注意这一行get_class(Son::getStatic());返回的是Son这个 class,可以总结如下:

new self

1.self 返回的是new self中关键字new所在的类中,比如这里例子的 :

public static function getSelf() {

return new self(); // new 关键字在 Father 这里

}

始终返回Father。

new static

2.static则上面的基础上,更聪明一点点:static会返回执行new static()的类,比如Son执行get_class(Son::getStatic())返回的是Son,Father执行get_class(Father::getStatic())返回的是Father

而在没有继承的情况下,可以认为new self和new static是返回相同的结果。

Tips: 可以用一个好的 IDE 来直接看注释。比如 PhpStorm:

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读