@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

PHPで作っているTODOリストアプリケーションにPRGパターンを適用する

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でクラスを書く事に挑戦しようと思います。

参考