[PHP-users 14345] Re: データベースのデータを保持するクラスの作成について
Mera
php-users@php.gr.jp
2003年 3月 27日 (木) 02:48:51 JST
黒木です。
> データベースのデータを保持するクラスを作成する際に以下の点でいつも悩ん
で
> しまいます。
・・・略・・・
> こうはしてみたものの良いものとはとても思えないのが現状です。
>
> 皆さんはデータベースのデータを絡めるようなクラスはどのように作られている
> のでしょうか?
私の場合は、PostgreSQL を使ってるのですが、pg_fetch_object
でオブジェクト型でデータを取得した後、セッション情報に保存
しています。
1つのWEBアプリケーションが動いてる間のみですが、数日の間
保持したい場合はシリアライズした情報をそのままデータベース
にまるごと保存したりもします。 他にもまとめて読み込んだ
データがセッション情報に含まれているので読み込み回数が1回
で済みます。
セッション情報に格納する変数はセッション情報格納用の専用
のクラスを作成し、そのクラスの中に登録する情報を格納します。
class Session {
var $aData ;
function Session() { $this->aData = array() ; }
function add( $stKey, $mData ) { $this->aData[$stKey] = $mData }
function del( $stKey ) { unset( $this->aData[$stKey] ; }
function get( $stKey ) { return $this->aData[$stKey] ; }
function exist( $stKey ) { return isset( $this->aData[$stKey] ) ; }
}
セッション機能はあれもこれもと変数をいろいろ登録しておくと
そのうち開発者側が破綻してしまいますので(笑) 登録するのは
この Session クラスだけになります。 ここの中に取得した
情報を登録しておきます。
// セッション開始
session_start() ;
if( !isset( $_SESSION["session"] ) ) {
// セッション取得
$oSes = $_SESSION["session"] ;
} else {
// セッションオブジェクト生成
$oSes = new Session ;
$_SESSION["session"] = $oSes ;
}
// データ取得
if( $oSes->exist( "hoe_rec" ) ) {
// データを取得
$oHOE = $oSes->get( "hoe_rec" ) ;
} else {
// データを取得してセッションに登録
$iCon = pg_connect( hogehoge ) ;
$iRes = pg_query( $iCon, "select * from hoehoe" ) ;
$oHOE = pg_fetch_object( $iRes, 0 ) ;
$oSes->add( "hoe_rec", $oHOE ) ;
}
// セッション情報書き込み
session_write_close() ;
データベースに保存する場合は、$oSes をシリアライズして text型の
カラムに入れてます。
私の場合はこんな感じです。
--
Junichi Kuroki
PHP-users メーリングリストの案内