<!DOCTYPE html>
<meta charset="utf-8">
<?php
require_once 'Data.php';
require_once 
'DataCaretaker.php';

$caretaker = new DataCaretaker();

$data = isset($_SESSION['data']) ? $_SESSION['data'] : new Data();
$mode = isset($_POST['mode']) ? $_POST['mode'] : '';

switch (
$mode) {
    case 
'add':
        
$data->addComment($_POST['comment']);
        break;
    case 
'save':
        
//データのスナップショットを保存する
        
$caretaker->setSnapshot($data->takeSnapshot());
        echo 
'データを保存しました。<br />';
        break;
    case 
'restore':
        
//スナップショットからデータを復元する
        
$data->restoreSnapshot($caretaker->getSnapshot());
        echo 
'データを復元しました。<br />';
        break;
    case 
'clear':
        
$data = new Data();
        break;
    default:
        break;
}

echo 
'これまでのコメント。<br />';

if (!
is_null($data)) {
    echo 
'<ul>';

    foreach (
$data->getComment() as $comment) {
        echo 
'<li>' htmlspecialchars($commentENT_QUOTES);
    }

    echo 
'</ul>';
}

$_SESSION['data'] = $data;

?>
<form action="index.php" method="post">
    コメント:
    <input type="text" name="comment" />
    <input type="submit" name="mode" value="add" />
    <input type="submit" name="mode" value="save" />
    <input type="submit" name="mode" value="restore" />
    <input type="submit" name="mode" value="clear" />
</form>