[PHP-users 10633] Re: pear DBオブジェクトのセッションでの受け渡し

Shinsuke Matsui php-users@php.gr.jp
Tue, 8 Oct 2002 13:49:56 +0900


松井です。

On Tue, Oct 08, 2002 at 12:19:01PM +0900,
 Masashi Shinbara wrote:

> > print_r()で$dbの中身を確認してみると、
> > 
> > __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => db_pgsql(以下略)
> db_pgsqlクラスの定義が無いのでしょうから、
> require_once('DB/pgsql.php');
> をsession_start()の前に追加してはどうでしょうか。

試してみました。

Warning: pg_errormessage(): supplied argument is not a valid PostgreSQL
link resource in /usr/local/lib/php/DB/pgsql.php on line 412

という警告は出ますが、print_r()で確認したところ、問題はないようです。
ただ、

> ただこうするとDBが変わった場合にDSNだけでなく、require_once()も
> 書き換えないといけないのでイマイチかもしれませんね。

という問題の他に、そもそもpear DBを使用する目的が「DBがなんであるかは
できるだけ意識したくない」というものですから、そこら辺が(個人的には)
問題になってしまいます。
せっかくアドバイスを頂きましたのに申し訳ありません。

> 素朴な疑問ですが、DBオブジェクトをセッションで持ち回す意味合いは
> 何でしょうか。

DBオブジェクトそのものというよりも、DBオブジェクトをメンバとして持つ
オブジェクトをセッションで持ち回すことを考えていました。

その理由ですが、DBへアクセスする必要があるメソッドを持つクラスに、
メンバとしてDBオブジェクトを持たせると、DBへのアクセスが必要になった場合、
クラスの内部で完結させることができるのでキレイにまとめることができるかな
と思ったからです。

また、そういったDBオブジェクトをメンバとして持つ、オブジェクトが
複数ある場合、必要に応じて、それぞれのオブジェクトで別々のDBにアクセスする
こともできるので、DBの分散もできるかなとも考えました。

# 今、オブジェクト指向を勉強中ですので、トンチンカンなことを書いて
# いたら申し訳ありません。
-- 
Shinsuke Matsui <smatsui@internet-inc.co.jp>