0

私はFuelPHPがどのように書かれたかを理解しようとしています。そして私はOOPをあまり知らないので、このクラスが https://github.com/fuel/core/blob/master/classes/dateのときに戸惑います。 php

これが私が理解していない方法です:

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が呼び出されますか?私は本当に困惑しています、誰かが私を理解するのを手伝ってくれますか?ありがとう

4

2 に答える 2

1

このクラスは、ファクトリデザインパターンを使用しているように見えます。ここで調べてください:PHP-ファクトリデザインパターン

ファクトリパターンを使用すると、実行時にクラスをインスタンス化できます。_constructメソッドは、クラスがインスタンス化されるとすぐに実行されます。

于 2011-08-12T22:40:35.590 に答える
1

オブジェクトがインスタンス化されると、最初に呼び出されるメソッドは__construct()メソッドです。これは、クラスのデータメンバーを構築し、クラス内の他のメソッドを呼び出す前に他の初期化操作を実行するのに役立つため、コンストラクターと呼ばれます。

ファクトリは、実行時までわからない条件に基づいてクラスを作成するために使用される作成デザインパターンです。-http ://en.wikipedia.org/wiki/Factory_method_pattern

_init()は、このライブラリがクラスを設定するために使用する別のメソッドのようです。

これらの分野の知識を深めるために、OOPを読んでから、パターンを設計することをお勧めします。

于 2011-08-12T22:43:41.317 に答える