php -- new self() 和 new static
Posted good good study, day day up !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php -- new self() 和 new static相关的知识,希望对你有一定的参考价值。
看一段摘自网上的代码
class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); } } class B extends A {} echo get_class(B::get_self()); // A echo get_class(B::get_static()); // B echo get_class(A::get_static()); // A
通俗点讲就是:
new self(); 在哪个类里面执行的该代码,返回的就是哪个类的对象。如果该代码只写在父类中,即使子类继承自父类,返回的依然是父类的对象。
new static(); 哪个类调用的它,返回的就是哪个类的的对象。
以上是关于php -- new self() 和 new static的主要内容,如果未能解决你的问题,请参考以下文章
php -- new self() 和 new static
PHP中new static() 和 new self() 的区别
PHP中new self()和new static()的区别探究