Дисциплины - Объектно-ориентированное программирование

ООП в PHP - Магические методы - __isset()

При имитации свойств с помощью методов __get и __set всегда нужно помнить, что реально таких свойств не существует. Но использовать ваш класс может и другой программист, и имитированные свойства могут быть приняты им за реально существующие. Казалось бы, в этом нет ничего плохого, но при попытке проверить наличие имитированного свойства при помощи функции isset можно получить неожиданный результат:

$p = new Squere(10);
// наличие свойства area в классе Squere имитировано 
var_dump(isset($p->area)); //  bool(false)

Чтобы избежать подобных недоразумений существует магический метод __isset, который вызывается при попытке проверить наличие недоступного или несуществующего свойства с помощью функции isset. Возвращаемое методом __isset логическое значение и говорит, следует ли считать свойство существующим.

Добавим реализацию метода __isset в класс Squere:

public function __isset($name) {
  if ($name == 'area') {
    return true;
  }
  return false;
}

Теперь функция isset возвращает ожидаемый результат:

$p = new Squere(10); 
var_dump(isset($p->area)); //  bool(true)

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
814301 БГУИР
814302 БГУИР
814303 БГУИР
894351 БГУИР
90421 БГУИР


Изображения Видео

1. Абстрактная фабрика https://www.youtube.com/watch?v=1mVONOCxfLg
2. Фабричный метод https://www.youtube.com/watch?v=5UqUDR6_2cY
3. Шаблон декоратор https://www.youtube.com/watch?v=Lwb9bm8yKD0
4. Dessign patterns on PHP https://github.com/domnikl/DesignPatternsPHP
5. Приёмы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
6. Приемы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
7. Ajax http://erud.by/ajax
8. Ajax http://erud.by/ajax
9. Ajax http://erud.by/ajax
10. Документация Laravel http://laravel.com
Задание к курсовой работе
Задание к курсовой работе
Вопросы к экзамену