ちょっといけてるArrayObjectあたりつかったリクエストクラス考え中

文字コード云々の問題含めてPHPでもrackのrequestクラスみたいなのほしーなーとざっくり考え中。

とりあえず対応したい問題
(1) 文字コードのチェック
(2) nullバイトの削除
(3) isset($_POST)とか書きたくない

大まかにいうとこーいうイメージ(あくまでイメージ

<?php
//上書きしちゃう。不正な文字列の場合は例外が出る
$_POST = new Holo_Request_ArrayObject($_POST,
                         mb_string_internal_encoding(),
                         Holo_Request_ArrayObject::RESULT_DEFAULTVALUE
                         || Holo_Request_ArrayObject::ERROR_REMOVE_ONRY);
 
//配列に値は入ってないのでfalseを返す
assert(isset($_POST['notvalue']) === false);
 
//だけど配列に値がなくてもnoticeとか出力せずなんか返す(デフォルトはnull)
assert($_POST['notvalue'] === null);

//もちろん設定かえれば
$_POST->setDefaultValue('mote');
 
// "mote"を返す。
assert($_POST['notvalue'] === mote);

一応、(1)(2)(3)を満たしたけど、is_array($_POST)とかしたらfalse返すことに気がつく。
あーまぁそうだよね。これだと今まで動いたフレームワークを強引に書き換えという要件には使えないパターンがでてくるよなーと思った。

<?php
//上書きしちゃう。不正な文字列の場合は例外が出る
$value = new Holo_Request_ArrayObject($_POST,
                         mb_string_internal_encoding(),
                         Holo_Request_ArrayObject::RESULT_DEFAULTVALUE
                         || Holo_Request_ArrayObject::ERROR_REMOVE_ONRY);
$_POST = (array) $value;

で、たぶん(1)(2)は満たせるから、(3)に関しては、自分用として使おうかなと思った。
一応ソース


テストにphptをはじめてつかったけど、いまいち、手になじめてない。
コメントかかないとな。

forkとかpullとか大歓迎。原型とどめないようなやつがみたい。

あとやろうと思ってること