DBオブジェクトでやってもーた!

いま作っている HTML_FormControl.class では、DbDataクラスを継承した DbHTML_Formクラスを Session に入れてしまっているので、以下の投稿者と同様のエラーが発生している。
これを避けるには、石井達夫さんが述べているように一々 `& new' してやらないといけないわけです。うまいことそれ出来ますかね?

石井です.

> 新原です。
>
> > Fatal error: The script tried to execute a method or access a property of
> > an incomplete object. Please ensure that the class definition db_pgsql of
> > the object you are trying to operate on was loaded _before_ the session
> > was started in /home/smatsui/public_html/test.php on line 12
> >
> > print_r()で$dbの中身を確認してみると、
> >
> > __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => db_pgsql(以下略)
> db_pgsqlクラスの定義が無いのでしょうから、

そういう問題ではないような気がします.単にdb_pgsqlの$connectionプロパ
ティがセッション管理によって復元できていないだけだと思います.というか,
データベースへのコネクションをセッションオブジェクトとして持ち回るのが
そもそも無理だと思います.私もDBクラス使っていますが,毎回DBクラスのオ
ブジェクトを作っています.

> require_once('DB/pgsql.php');
> をsession_start()の前に追加してはどうでしょうか。

DBクラスは自動的にDSNによって適当なデータベースクラスをロードするので,
これは必要ないでしょう.

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

というわけで,「DBオブジェクトをセッションで持ち回す意味合いはない」と
いうか,「DBオブジェクトをセッションで持ち回すことはできない」に一票.

  • -

Tatsuo Ishii
http://ml.php.gr.jp/pipermail/php-users/2002-October/010625.html