2015-03-31 49 views
1

我在大型項目中工作,並且在代碼中找到了這些行。PHP返回新自己的兩個變量

他們之間有什麼不同?

如何在沒有構造的情況下工作?

兩個變量:

final public static function make(AbstracClass $variable, array $array = array()) 
     { 
      $Class = get_called_class(); 

      return new $Class($variable, $array); 
     } 

有了一個變量回報新

final public static function make($array = array()) 
{ 
    return new self($array) 
} 

回答

1

由於這些方法具有不同的簽名我只能假設它們是不同類的成員,所以這是一個原因他們用不同的參數調用構造。另外,因爲你說沒有構造函數,我可以假設這些類繼承自另一個類,因爲類的構造函數可以被繼承。

調用return new self($array);總是返回此語句中定義的類的實例。

調用get_called_class();總是會返回您從調用類,即使這種說法在繼承的類存在。

的方式使用該功能:

final public static function make(AbstracClass $variable, array $array = array()) 
{ 
    $Class = get_called_class(); 

    return new $Class($variable, $array); 
} 

是一樣:

final public static function make(AbstracClass $variable, array $array = array()) 
{ 
    return new static($variable, $array); 
} 

因爲self將始終返回語句定義在類,和static永遠是一流的它被稱作。