PHP延遲靜態綁定 static關鍵字

示例代碼1php

abstract class Parent
{
                  
}

class Man extends Parent
{
     public static function create(){
          return new Man();
     }  
}

class Woman extends Parent
{
      public static function create(){
          return new Woman();
      }  
}

    示例代碼有一個parent父類,還包含Man和Woman兩個子類,並在該兩個類中都包含建立自己的的靜態方法create().這段代碼雖然能夠很好工做,可是每一個子類都必須寫create這個靜態方法。寫大量的重複代碼很煩人,若是不想爲parent的全部子類都寫這段相似的代碼。若是咱們把create方法寫到父類。spa

   示例代碼2code

abstract class Parent
{
      public static function create(){
           return new static();
      }           
}

class Man extends Parent
{
     
}

class Woman extends Parent
{
     
}

示例代碼2使用了php的特性延遲靜態綁定,該關鍵字相似於self,但它指的是被調用的類而不是包含的類,Man::create()生成的事Man對象,不是parent對象。對象

相關文章
相關標籤/搜索