public function testMemento()
 {
     $originator = new Originator();
     $caretaker = new Caretaker();
     $originator->state = "On";
     $caretaker->memento = $originator->createMemento();
     $originator->state = "Off";
     $originator->setMemento($caretaker->memento);
     $this->assertEquals($originator->state, 'On');
 }
    private $_state = null;
    public function getState()
    {
        return $this->_state;
    }
    public function setState($state)
    {
        $this->_state = $state;
    }
    public function createMemento()
    {
        return new Memento($this->_state);
    }
    public function setMemento($memento)
    {
        $this->_state = $memento->getState();
    }
    public function display()
    {
        echo "state = " . $this->_state . "<br/>";
    }
}
$objOriginator = new Originator();
$objOriginator->setState(0);
$objOriginator->display();
$objCareTaker = new CareTaker();
$objCareTaker->setMemento($objOriginator->createMemento());
$objOriginator->setState(1);
$objOriginator->display();
$objOriginator->setMemento($objCareTaker->getMemento());
$objOriginator->display();
示例#3
0
文件: Memento.php 项目: alxolr/php-dp
 public function __construct()
 {
     $this->first = 'first';
     $this->second = 'second';
     $this->ct = new Caretaker();
     $this->orig = new Originator();
     $this->orig->setState($this->first);
     $this->ct->addMemento($this->orig->createMemento());
     $this->orig->setState($this->second);
     $this->ct->addMemento($this->orig->createMemento());
     $this->orig->setMemento($this->ct->getMemento(1));
     echo $this->orig->state;
 }