PHP中new static()与new self()的区别及5.2版本重写5.3

来源:互联网 发布:适合苹果电脑的软件 编辑:程序博客网 时间:2024/05/17 00:01

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

5.2替换5.3 return new static($val); 

用 get_class($this); 代码如下:

class A {

  public function create1() {
    $class = get_class($this);
    return new $class();
  }
  public function create2() {
    return new static();
  }
}


class B extends A {

}


$b = new B();
var_dump(get_class($b->create1()), get_class($b->create2()));


/*
The result 
string(1) "B"
string(1) "B"

*/

参考http://www.jb51.net/article/54167.htm

原创粉丝点击