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

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

Эти методы, возможно, понадобятся вам, когда вы столкнётесь с сериализацией экземпляров класса. Подробное рассмотрение этого понятия немного выходит за рамки этой статьи, но для того, чтобы понять, зачем эти методы всё же нужны, знать что такое сериализация вам не помешает.

Сериализация – это процесс представления какой-либо структуры данных (экземпляра класса, ассоциативного массива и т.д.) в виде последовательности байтов.

В php для сериализации используется функция serialize. Для десериализации объекта, то есть для восстановления изначального состояния сериализованного объекта в php есть функция unserialize.

$p = new Point(new PointPrinter(), 20, 10);
$str = serialize($p);
echo "$str
"; // O:5:"Point":3:{s:8:"Pointx";i:20;s:8:"Pointy";i:10;…
$p = unserialize($str);
echo "({$p->x}, {$p->y})"; // (20, 10)

Метод __sleep вызывается при попытке сериализовать экземпляр класса. Он должен возвращать массив, который содержит имена полей класса, которые должны быть учтены при сериализации. Его полезно использовать, если вы не хотите чтобы при сериализации были учтены некоторые поля класса. Например, при такой реализации у экземпляра класса Point поле $printer не будет учтёно при сериализации.

public function __sleep() {
  return array('x', 'y');
}

Метод __wakeup вызывается при попытке десериализовать экземпляр класса. В его теле можно, например проверить или восстановить соединение с БД или файлом откуда будет читаться сериализованный экземпляр.

Количество комментариев: 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
Задание к курсовой работе
Задание к курсовой работе
Вопросы к экзамену