Jan 23

逆引きrhaco(?)14: GET,POSTしてきた値をオブジェクトに代入する

!!rhaco.orgにさらされた><

ということでさらされ記念で更新します。でもマイペースでいきますです。
今回はHPからGET,POSTリクエストで渡されたデータをオブジェクトに代入してみます。

network.http.Request内にあるtoObjectを使ってみます。
index.php?a=1&b=2&c=3&d=4のようなデータが送られるとします。

通常は

<?php

class hoge {
   var a;
   var b;
   var c;
   var d;
   function hoge(){
   }
   ....
}
$h = new hoge();
$h->a = $_GET['a'];
$h->b = $_GET['b'];
$h->c = $_GET['c'];
$h->d = $_GET['d'];


<?php
Rhaco::import('generic.Flow');
class hoge {
   var a;
   var b;
   var c;
   var d;
   function hoge(){
   }
   ....
}
$flow = new Flow();
$h = $flow->toObject(new hoge());
.....
値チェックして、処理に回してほげほげ
?>

これだけです。簡単ですね!この元メソッドはnetwork.http.Requestにありますので、network.http.Request,network.http.RequestLoginでもこのメソッドは使用できます。でもgeneric.Flowが非常に便利なのでつい使ってしまいます。

この機能が非常に便利なのはリクエストデータをデータベースに保存する場合です。rhacoではテーブルモデルを用意してあり、各カラムへのgetter,setterが用意されているのですが、いちいち使わなくてもtoObject一発で代入してくれます。すげー。
ちなみに同じことが
------ 2008/8/22修正
$h = V::ho($_GET,new hoge());
$h = ObjectUtil::hashConvObject($_GET,new hoge());
//----- version 1.4.9までは下の書式も可
$h = Variable::hashConvObject($_GET,new hoge());
$h = V::hashConvObject($_GET,new hoge());

------ ここまで
という書き方でも可能です。これも非常〜に便利です。データをちょっと修正してから代入したい時はこれを使っています。

| comment(0)

このエントリーのはてなブックマーク (-)