[RaptorsFramework][PHP]リクエストをオブジェクト化する
公開日:
:
最終更新日:2024/01/18
RaptorPHPFramework
RaptorFrameworkだけどネーミングに既に先客がいた。
どうしてもラプターって言う単語だけは使いたいので何とかならないかってことでRaptorをRaptor”s”と複数形にすることで対応した。
向こうもドマイナー中のドマイナーなFWだしね。こんなこと言ったら怒られるけど。
ってことでこのWPカテゴリ名も変更した。
本題だけど今回はリクエストをオブジェクト化することを目指す。
単純にリクエストを取るだけなら
$_GET["取りたいキー列"]
で取得できるが、PHPファイルを共用していたら、そのリクエスト内にそのキー列が無かったらエラーを吐いてしまう。
例えば、フォームで新規追加と編集を兼ねたPHPファイルがあったとする。
<input name="username" type="text" value="<?php echo $_GET["hoge"]; ?>"/>
って言うテキストボックスがあったとする。
編集画面ならリクエストヘッダ内にキーhogeのデータを入れておけばvalue内には自動的にそのhogeデータを出力してくれるので問題はない。
ところが新規追加の場合テキストボックス内のvalue値に入るリクエストデータはないことの方が多い。
その場合、エラーが返ってきてテキストボックス内にエラー文が出力されてユーザー側は入力どころではなくなる。
if(isset($_GET["hoge"]){echo $_GET["hoge"];})
なんて条件分岐式を書くなんて泥臭いやり方はしたくないし、ソースコードが冗長になって後から編集するのも面倒だ。
ってことで、GET、POST、Cookieデータを一括して配列に纏め、その中に求めるデータがあるかどうか判別していく事にする。
ってことで書いたスクリプトがこれ。
class reqest { var $object = array(); function reqestObject() { $_REQUEST = array_merge($_GET, $_POST, $_COOKIE); $object = $_REQUEST; return $object; } }
一括して$object配列内にリクエストヘッダーをぶち込んでしまう。
配列内に入れたデータはクラス化してあるのでいつでも取り出すことができる。
ただ、配列のデータなので、これだと当初の目的が達成できない。
という事でこのクラス内でもう一つFunctionを追加する。
function get($namekey = null){ $object = $this->reqestObject(); if(isset($object[$namekey])){ return $object[$namekey];</pre> <pre> } }
このget関数に対して求めるリクエストのキー列を投げて、そのリクエストデータが有ったらそれを文字列として返す。
使い方としては
<?php echo $request->get("hoge"); ?>
仮にhogeというデータが有ったらそれを出力してくれる。
仮にリクエスト内にhogeというデータが無かったとしても空欄(というよりはnullと言った方が良いか)が返ってくるのでエラーが出てくることもない。
これで心置きなくリクエストデータを扱えるわけだ。
リクエストデータは全て取得するので、
(URL)/index.php?hoge=test
というクエリストリングが有ったら、
<?php echo $request->get("hoge"); ?>
と書けばしっかり[test]と出力してくれる。
リクエストの扱いはこの形でオブジェクト化して使う。
そろそろデータベースへのインサートをやりたいね。
関連記事
-
フレームワークを作ってみる。
このブログ。元々PHPの学習状況を報告する為の場所だったんだが、いつの間にか遊びの報告しかしてない事
-
[PHP]西暦→世紀変換する
(遊戯王真DM2本編より転用+一部改変) 先日偶然家にいた姉と真DM4をやっていた。舞台設
-
[php]どの数値の倍数かどうかを判定する
俺はPHPでクラス関数を開発した人の事は全力で称えたい PHPでどの数値の倍数かどうかを判定す
-
[RaptorsFramework][PHP]DB接続
前回に引き続きRaptorFrameworkの作業を続ける。 Coreファイルをゴリゴリ追加し