$_POSTをプログラム中で使用するのはいけないのだろうか?
スーパーグローバル変数の上書き
どこからでもアクセスができるスーパーグローバル変数へ、プログラムコード上から上書きするのは最悪かもしれない。何が入っているのか、どこで値が入ったのか、わからなくなってしまう。しかし、参照するぐらいなら問題ないのではないだろうか?
テストのしづらさの解決
$_POSTはスーパーグローバルな変数なので、テストしたいパラメータを$_POSTに代入してしまえば、問題なくテストができる(キリッ)。先にも述べたとおり、スーパーグローバルな変数への上書きは気持ちが悪いが、「テスト時に限定する」と決めておけばよいのではないだろうか?
一般的なフレームワークでは…
プロパティrequestやstaticなメソッドにカプセル化する。そして引数として処理Modelに受け渡す。$_POSTのラッパーモデル化して、PHPのバージョンアップに備える($_POSTの変更に合わせてラッパーモデル/ラッパーメソッドを変更すれば、変化に強いよね)みたいな…
まとめ
考えた上で適切な対応ができるならば、$_POSTをそのまま参照型で使ったり、決まった用途で上書きしても、別にいいよね。
むしろ、そのためのスーパーグローバル変数なのだから。
もし$_POSTが定数だったり、スーパーグローバルでなく、なんかしらのオブジェクトだったら、別の理由で私達は(少なくとも私は)苦労していたに違いない。
コメント