はじめに(おまじない)
WEBフレームワークなどを使用していて、OOPをしている方々には(もしかしたら、そうでない方にも)、\$_POSTや\$_GETをそのまま使用するのは「ありえない話」かもしれません。
たぶん現代PHPエンジニアは、\$_POSTや\$_GETなどのグローバルな変数に対し、httpリクエストインスタンス的なラッパーをかまして扱うのが、現代PHPなんだと思っています。
今回、私は試験的に「ありえない話」をしようとしていますので、もしかしたら、読まずにスルーしていただいたほうが、お互いに幸せかもしれません。
※上記は#include <stdio.h>的なおまじないです。深い意味はありません。
$_POSTや$_GETについて
これらの変数は素のPHPでは、よく使われます。唯一の入力値でもありますので当然といえば当然です。
これらの変数を「もっと気軽に使ったほうがいいのでは?」と思っています。そのままWEBからの入力値としてラッパーをかまさずに使っているシステムをいくつか見てきましたが、とくにコーダーが非常識なことをしなければ、それがバグの要因になって困りません。困ったことがありません。その経験から、今も素のPHPを書く時は、そのまま\$_POSTや\$_GET扱っています。しかし、\$_POSTや\$_GETをいくつも書くのは骨が折れます。というか\$_POSTや\$_GETという文字を見るのが最近は億劫です。。。
グローバルな変数への置き換えをしても、関数を実行する度にglobalキーワードや\$GLOBALを使うのは気持ちが悪いし、それならまだ引数として必ず受け取るかメソッドから取得した方がまし。
...でもそうじゃない。短く書きたい。できれば1文字で。
※コード設計に関係する話にはせずに、入力の億劫さは「エディタの機能で補完せよ」という主張もあるかもしれませんが、宗教上の理由によりできません。
解決方法を見つけた
define("p", $_POST);
define("g", $_GET);
define("f", $_FILES);
define("c", $_COOKIE);
echo p["onamae"];
※php7から配列も定数にできるようになった。
※定数だけど小文字なのは入力しやすいからです。
※もったいぶった言い方をしましたがネタはこれだけ。すみません。
良い点
- 定数なので内容が書き換えられない。
問題点
- requestの値を定数にするのはそもそもおかしい。
個人的な結論
- とても短くなったから、これでいいんじゃね。