new self()和new static()的区别
:
new static()是php5.3以后引入新的特性,延迟静态绑定.访问的是当前实例化的那个类,那么 static 代表的就是那个类。
两者都是实例化自身,区别在于继承。
如果没有继承,则两者返回的实例都是属于一个类;
如果有继承,子类调用该方法,new self
仍然返回原类的实例,而 new static
返回实际子类的实例。
这就是延迟静态绑定,static 的值,使用的是最后实际调用那个方法的类。
new self()和new static()的区别
:
new static()是php5.3以后引入新的特性,延迟静态绑定.访问的是当前实例化的那个类,那么 static 代表的就是那个类。
两者都是实例化自身,区别在于继承。
如果没有继承,则两者返回的实例都是属于一个类;
如果有继承,子类调用该方法,new self
仍然返回原类的实例,而 new static
返回实际子类的实例。
这就是延迟静态绑定,static 的值,使用的是最后实际调用那个方法的类。