Skip to content

MasterHans/getter-setter

Repository files navigation

Геттеры и Сеттеры: на примере в PHP, а также в YII2

Описание

Примечание!!! Это методы который начинаются с:

  • get - Геттер
  • set - Сеттер

Для чего нужны НЕ магические Геттеры и Сеттеры

  1. Не всегда безопасно и правильно объявлять внутри класса публичную переменную, поэтому переменная объявляется как protected или private и сохраняется внутри класса через Сеттер, а извлекается через Геттер.
  2. При установке значения переменной сеттером можно сделать ряд дополнительных действий и проверить соответствует ли значение переменной каким либо критериям. Например число рук человека равно 2.
  3. Можно добавить геттеры и сеттеры в интерфейс чтобы прописать их обязательное создание в классах имплементирующих этот интерфейс.

Магические __get, __set

недостатком является то что какие переменные существуют в классе мы не знаем, но можно описать их через phpDoc тегов @property, @property-read, и @property-write

Yii2 Геттеры сеттеры.

В базовом классе фреймворка BaseObject прописаны волшебные методы __get и __set, которые позволяют не использовать приставку "get" и "set" в геттерах и сеттерах

public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }

    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published