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');
 }
示例#2
0
 public function run()
 {
     $o = new Originator();
     $o->setStatus('status1');
     $this->saveToHistory($o->getStatusAsMemento());
     $o->setStatus('status2');
     $this->saveToHistory($o->getStatusAsMemento());
     $id = 2;
     $O->restoreFromMemeto($this->getStatus($id));
 }
示例#3
0
 public function testMemento()
 {
     $originator = new Originator();
     $originator->setState("On");
     $this->assertEquals("On", $originator->getState());
     $memento = $originator->createMemento();
     $this->assertInstanceOf('Behavioral\\Memento\\Memento', $memento);
     $caretaker = new Caretaker();
     $caretaker->setMemento($memento);
     $originator->setState('Off');
     $this->assertEquals("Off", $originator->getState());
     $memento = $caretaker->getMemento();
     $this->assertInstanceOf('Behavioral\\Memento\\Memento', $memento);
     $originator->restore($memento);
     $this->assertEquals("On", $originator->getState());
 }
示例#4
0
 public function runCustomLogic()
 {
     $originator = new Originator();
     //Setting state to State1
     $originator->setState('State1');
     //Setting state to State2
     $originator->setState('State2');
     //Saving State2 to Memento
     $this->saveToHistory($originator->getStateAsMemento());
     //Setting state to State3
     $originator->setState('State3');
     // We can request multiple mementos, and choose which one to roll back to.
     // Saving State3 to Memento
     $this->saveToHistory($originator->getStateAsMemento());
     //Setting state to State4
     $originator->setState('State4');
     $originator->restoreFromMemento($this->getFromHistory(1));
     //State after restoring from Memento: State3
     return $originator->getStateAsMemento()->getState();
 }
示例#5
0
 public static function run()
 {
     /* @var $savedStates Memento[] */
     $savedStates = array();
     $originator = new Originator();
     //Setting state to State1
     $originator->setState("State1");
     //Setting state to State2
     $originator->setState("State2");
     //Saving State2 to Memento
     $savedStates[] = $originator->saveToMemento();
     //Setting state to State3
     $originator->setState("State3");
     // We can request multiple mementos, and choose which one to roll back to.
     // Saving State3 to Memento
     $savedStates[] = $originator->saveToMemento();
     //Setting state to State4
     $originator->setState("State4");
     $originator->restoreFromMemento($savedStates[1]);
     //State after restoring from Memento: State3
 }
示例#6
0
}
//管理者caretaker类
class Caretaker
{
    private $memento;
    public function get_memento()
    {
        return $this->memento;
    }
    public function set_memento($memento)
    {
        $this->memento = $memento;
    }
}
//客户端,即测试
$o = new Originator();
$state = 'On';
$o->set_state($state);
$o->show();
$c = new Caretaker();
$memento = $o->create_memento();
//$o2 = new Originator();
$state2 = '2';
$o->set_state($state2);
$o->show();
$memento2 = $o->create_memento();
$c->set_memento($memento);
$c->set_memento($memento2);
$state = 'Off';
$o->set_state($state);
$o->show();
    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();
class Caretaker
{
    // 负责人(Caretaker)角色
    private $_memento;
    public function getMemento()
    {
        return $this->_memento;
    }
    public function setMemento(Memento $memento)
    {
        $this->_memento = $memento;
    }
}
// client
/* 创建目标对象 */
$org = new Originator();
$org->setState('open');
$org->showState();
/* 创建备忘 */
$memento = $org->createMemento();
/* 通过Caretaker保存此备忘 */
$caretaker = new Caretaker();
$caretaker->setMemento($memento);
/* 改变目标对象的状态 */
$org->setState('close');
$org->showState();
$org->restoreMemento($memento);
$org->showState();
/* 改变目标对象的状态 */
$org->setState('close');
$org->showState();
示例#9
0
 public static function main()
 {
     //创建目标对象
     $orig = new Originator();
     $orig->setState('open');
     $orig->showState();
     //创建备忘
     $memento = $orig->createMemento();
     //通过Caretaker保存此备忘
     $caretaker = new Caretaker();
     $caretaker->setMemento($memento);
     //改变目标对象的状态
     $orig->setState('close');
     $orig->showState();
     //还原操作
     $orig->restoreMemento($caretaker->getMemento());
     $orig->showState();
 }
示例#10
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;
 }
示例#11
0
文件: 0.php 项目: ruyicoder/php
/*
 * 管理员
 */
class caretaker
{
    private $_mememto;
    public function setMemento($memento)
    {
        $this->_mememto = $memento;
    }
    public function getMemento()
    {
        return $this->_mememto;
    }
}
//客户端代码
//备份前的状态
$originator = new Originator();
$originator->setState('on');
$originator->showState();
//创建备忘录
$memento = $originator->createMemento();
//通过管理员保存此状态
$caretaker = new caretaker();
$caretaker->setMemento($memento);
//改变目前对象的状态
$originator->setState('off');
$originator->showState();
//还原操作
$originator->restoreMemento($caretaker->getMemento());
$originator->showState();