PHP new static 和 new self详解
2017-02-19 16:49
761 查看
最近在一个视频的评论被问到一个小问题:这里选择用static 而不是self有特殊的考虑么?或者我们可以这样转换一下问题:
PHP 的 new static 和 new self 具体有什么?
其实这个来看一个例子应该就很清晰了:
class Father { public static function getSelf() { return new self(); } public static function getStatic() { return new static(); } } class Son extends Father {} 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:
Happy Hacking
您可能感兴趣的文章:
相关文章推荐
- php区分new static 和new self
- PHP new self和new static的区别
- PHP中new static()与new self()的区别及5.2版本重写5.3
- PHP 中的新语法 new static 是个啥意思?
- PHP中new static()与new self()的区别异同分析
- PHP中new static() 和 new self() 的区别介绍
- PHP 中 new static 和 new self 的区别
- PHP中new static()与new self()的比较
- PHP中new static()与new self()的比较
- PHP中new static()与new self()的区别异同分析
- PHP中new self()和new static()的区别探究
- PHP中new self()和new static()的区别探究
- PHP的new self() 与new static()
- PHP new self()和new static()的区别
- PHP面向对象中new self()与 new static()的区别浅析
- PHP中new static的使用方式示例
- PHP中new self()和new static()的区别
- PHP new self与new static
- PHP中new static() 和 new self() 的区别介绍
- PHP中new static()与new self()的区别