PHPにおけるnew static()とnew self()の違い

1485 ワード

PHPにおけるnew static()とnew self()の違い
self:常にselfコードが存在するクラス自体を指し、このクラスが何度継承されてもselfは最初にselfを使用したクラスを指す.static:staticを使用するクラスを指し、継承することによってのみstaticの存在の意味を体現することができ、そうでなければstaticはselfと同じである.
class A {
    public  function  getStatic(){
        return new static();
    }
    public  function  getSelf(){
        return new self();
    }
}
class B extends A{

}
var_dump((new B())->getSelf());//A
var_dump((new B())->getStatic());//B

疑問:1、new static()とnew self()が何の役に立つか分からない.2、new self()を使用する場合、なぜnew A()を使用しないのか.