Статья
Шаблон проектирования "Хранитель"

Шаблон проектирования "Хранитель"

30 ноября 2017

Создадим класс-хранитель Memento и класс Editor:

class Memento
{
    protected $content;

    public function __construct($content)
    {
        $this->content = $content;
    }

    public function getContent()
    {
        return $this->content;
    }
}


class Editor
{
    protected $content = '';

    public function setContent($content)
    {
        $this->content = $content;
    }

    public function getContent()
    {
        return $this->content;
    }

    public function save()
    {
        return new Memento($this->content);
    }

    public function restore(Memento $memento)
    {
        $this->content = $memento->getContent();
    }
}

 

Использование:

$editor = new Editor();
$editor->setContent('First state.');
$savedState = $editor->save();

$editor->setContent('Second state.');
echo $editor->getContent(); // Second state.

$editor->restore($savedState);
$editor->getContent(); // First state.



Источники:

http://designpatternsphp.readthedocs.io/ru/latest/Behavioral/Memento/README.html
https://habrahabr.ru/company/mailru/blog/325492/