PHP new static() 是什么意思?

帖子列表 发布于 2016/05/13 10:25
阅读 891
收藏 0
PHP
加载中
1
南湖船老大
南湖船老大

类似于self但是static关键字,可用于后期静态绑定,但是是个很失败的语法,不直观也不好理解。。。
new static 就是新建一个对象,只不过这个对象利用了延迟绑定

参考:http://php.net/manual/zh/language.oop5.late-static-bindings.php

朱__朱
朱__朱
回复 @Brox : 东西是好东西,命名太糟糕, 因为static在php里是原本存在的关键字, 却又赋予了完全不同意义的新特性。 业务开发基本用不到这个特性,底层开发时会用到。
南湖船老大
南湖船老大
回复 @Brox : 你都纠结了,说明不止一个人困惑过。说明这个语法太容易误解,不直观
帖子列表
帖子列表
失败在哪里?
0
南湖船老大
南湖船老大

参考代码:

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
返回顶部
顶部