2011-08-12 50 views
0

我試圖理解FuelPHP的編寫方式。由於我不太瞭解OOP,我很困惑這個類: https://github.com/fuel/core/blob/master/classes/date.php在FuelPHP中使用的OOP

以下是我不理解的方法:

public static function _init() 
{ 
    static::$server_gmt_offset = \Config::get('server_gmt_offset', 0); 

    // some code here 
} 

public static function factory($timestamp = null, $timezone = null) 
{ 
    $timestamp = is_null($timestamp) ? time() + static::$server_gmt_offset : $timestamp; 
    $timezone = is_null($timezone) ? \Fuel::$timezone : $timezone; 

    return new static($timestamp, $timezone); 
} 

protected function __construct($timestamp, $timezone) 
{ 
    $this->timestamp = $timestamp; 
    $this->set_timezone($timezone); 
} 

首先叫什麼? __counctruct的作用是什麼?什麼是工廠,何時使用,它返回什麼 - 它是否再次自稱?初始化類後是否調用_init?我真的很困惑,有人可以幫我理解嗎?謝謝

+0

好的,計算出_init先被調用(來自Fuel核心),當你調用一些方法(例如:Date :: time())時,factory()被調用,然後__conctruct ..謝謝大家的解釋,definitelly nee來檢查工廠模式! – Georgios

回答

1

當實例化對象時,要調用的第一個方法是__construct()方法。這被稱爲構造函數,因爲它有助於構造類的數據成員並執行任何其他初始化操作,然後才能調用其他方法。

工廠是一種創建設計模式,用於根據直到運行時才能知道的條件創建類。 - http://en.wikipedia.org/wiki/Factory_method_pattern

_init()似乎是這個庫用來設置它的類的另一種方法。

爲了進一步你在這些領域的知識,我建議你閱讀OOP,然後設計模式。

1

這個類看起來像是使用工廠設計模式。查看它:PHP - Factory Design Pattern

工廠模式允許您在運行時實例化一個類。只要類實例化,_construct方法就會運行。