new self() 与 new static() 用法区别
Posted double330
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new self() 与 new static() 用法区别相关的知识,希望对你有一定的参考价值。
new static()是php 5.3添加的延迟静态绑定(后期延迟绑定)功能。
它和new self()的相同点在于都是用来实例化一个类,
但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
{
};
var_dump(A::get_self());
var_dump(A::get_static());
var_dump(B::get_self());
var_dump(B::get_static());
{
public static function get_self()
{
return new self();
}
public static function get_static()
{
return new static();
}
}
class B extends A
{
};
var_dump(A::get_self());
var_dump(A::get_static());
var_dump(B::get_self());
var_dump(B::get_static());
输出:
class A#1 (0) {}
class A#1 (0) {}
class A#1 (0) {}
class B#1 (0) {}
以上是关于new self() 与 new static() 用法区别的主要内容,如果未能解决你的问题,请参考以下文章
对比 PHP 中 new static() 与 new self()
对比 PHP 中 new static() 与 new self()