I'm trying to undestand how FuelPHP was written.. And since I don't know OOP much, I'm puzzled when this class: https://github.com/fuel/core/blob/master/classes/date.php

Here are methods that I don't understand:

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);
}

What is called first? What __counctruct does? What is factory, when it's used, what it returns - does it call itself again? Is _init called after initializing class? I'm really puzzled, can someone help me understand? Thanks

有帮助吗?

解决方案

When an object is instantiated, the first method to be called is the __construct() method. This is called a constructor because it helps construct the class's data members and do any other initializing operations before you can call other methods int eh class.

A Factory is a creational design pattern used to create classes based on conditions that would not be known until runtime. - http://en.wikipedia.org/wiki/Factory_method_pattern

_init() seems to be another method that this library uses to set up it's classes.

To further your knowledge in these areas, i suggest you read up on OOP and then design patterns.

其他提示

This class looks like it is using the factory design pattern. Look it up here: PHP - Factory Design Pattern

The factory pattern allows you to instantiate a class at runtime. The _construct method runs as soon as the class is instantiated.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top