クエリー
<del>クエリーはビュー向けとモデル向けがある。宛先をクエリーに含めておいて、コントローラーはその宛先にクエリーを届ける役目。ビューもモデルも自分に届いたクエリーを解釈して、それに対する答えをコントローラーに返す。</del>
クエリーはコントローラーのもの。ユースケースにあたるコントローラー。 ユースケースごとにクエリーをpmint.icon定義。開発者がビューに埋め込むクエリーパラメーターはユースケースごとの定義を参考にして作る。
ひとつのクエリーに複数のユースケース向けパラメーターがあっていい。例えば、何かをするときにログインが必要で、ログイン後のリダイレクト先ユースケースのパラメーターを含んだり。
クエリーの仕様はそれを使うクラスにある。でもどのクエリーも、ビュー内のリンクやフォームに埋め込まなければならない。
仕様は呼び出す側にも知られていなければならないので、それでいい。定義がひとつのクラス内にあればいい。
クエリー内のパラメーター名には<del>クラス名</del>ユースケース名を含める。パラメーター名は名前付き引数と同じ名前。ユースケースを表すコントローラーではURL形式のクエリーではなく、言語が用意している引数を使う。クエリーパラメーターを扱うのは index.php のような代表になるファイルと、ビューだけ。
ビューではクエリーパラメーターを文字列としては扱わない。連想配列のようなキーと値のペアで扱う。サーバーレンダリングしたりJSONにするときに文字列化。それまでの経緯がパラメーターに残るようにしなければ使いにくくなるので、同じユースケースでもサイト内リンクで呼ばれたときと、URL直打ちで呼ばれたときではURLが異なる。本当に必要なパラメーターだけのクリーンなURLは canonical URL として、HTML内に埋め込む。
共有用のパーマリンクは静的ページで拡張子htmlでcanonicalなURI
デザインはひとつ。そのカスタマイズはしやすいようにする。