Объединение в цепочку статических методов в PHP?

Если вы хотите получить желаемый результат по оси Y, используйте нечто похожее на это:

49
задан Wilco 23 September 2008 в 16:53
поделиться

1 ответ

Мне нравится решение, предоставленное Camilo выше, по существу начиная со всего, что Вы делаете, изменяет значение статического участника, и так как Вы действительно хотите объединить в цепочку (даже при том, что это - только синтетический сахар), затем инстанцирование TestClass является, вероятно, лучшим способом пойти.

Я предложил бы Шаблон "одиночка", если Вы хотите ограничить инстанцирование класса:

class TestClass
{   
    public static $currentValue;

    private static $_instance = null;

    private function __construct () { }

    public static function getInstance ()
    {
        if (self::$_instance === null) {
            self::$_instance = new self;
        }

        return self::$_instance;
    }

    public function toValue($value) {
        self::$currentValue = $value;
        return $this;
    }

    public function add($value) {
        self::$currentValue = self::$currentValue + $value;
        return $this;
    }

    public function subtract($value) {
        self::$currentValue = self::$currentValue - $value;
        return $this;
    }

    public function result() {
        return self::$currentValue;
    }
}

// Example Usage:
$result = TestClass::getInstance ()
    ->toValue(5)
    ->add(3)
    ->subtract(2)
    ->add(8)
    ->result();
48
ответ дан 7 November 2019 в 11:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: