PHPでTODOリストをつくる、追加まで - @ledsun blog で、タスクを追加したときの画面遷移にPRGパターンを使うと良いことに気がつきました。 次のように実装しました。
<!DOCTYPE html> <head> <title>TODOリスト</title> </head> <body> <form method="post"> <input type="text" name="name" autofocus> <button>追加</button> </form> <ul> <?php foreach (restore_todo_list() as $todo) { echo "<li>" . $todo . "</li>"; } ?> </ul> </body> <?php if ($todo = $_POST["name"]) { $todo_list = restore_todo_list(); array_unshift($todo_list, $todo); save_todo_list($todo_list); // GETリクエストするようにリダイレクトします。 header('Location: todo.php'); } function restore_todo_list() { return array_filter(explode(",", $_COOKIE["todo_list"])); } function save_todo_list($todo_list) { $todo_list_str = array_reduce($todo_list, function ($carry, $todo) { return $carry . "," . $todo; }); setcookie("todo_list", $todo_list_str); } ?>
このコードを見ているとToDoリストがデータとその操作を持つオブジェクトに見えてきました。 つまり、TodoListクラスにして、restore/saveメソッドを持たせたいです。 次はPHPでクラスを書く事に挑戦しようと思います。