[PHP-users 5726] Re: session使用時のclass definition のエラーとは?

KOYAMA Tetsuji php-users@php.gr.jp
Wed, 27 Feb 2002 21:57:27 +0900


  小山です。

At Wed, 27 Feb 2002 17:39:41 +0900,
space@try-net.or.jp wrote:

> PHP4: 4.1.1(日本語対応)でPostgreSQL: 7.2をレンタルサーバーで利用してます。
> 同じ環境の2つのサーバーで同じファイルを動かしたのですが、1つではちゃん
> と動作し、もう1つでは、以下のようなエラーがでました。
> 
> Fatal error: The script tried to execute a method or access a property 
> of an incomplete object. Please ensure that the class definition
> resultpgselect of the object you are trying to operate on was loaded
> _before_ the session was started 

  おそらく resultpgselect クラスのオブジェクトがセッションに登録されて
いますよね。で、セッションからオブジェクトを再構築する際に、定義が見つ
からないと文句を言っています。つまり session_start() の *後* で
resultpgselect クラスの定義がある(または定義しているファイルをrequire 
している) ので、セッション開始時点では定義の存在しないクラスを作ること
になってします。その結果、、セッションハンドラはしょうがないので 
Object 型のオブジェクトを生成します。当然こいつは resultpgselect のメ
ンバー関数は保持していないので上記のエラーになるわけです。

  session_start() を呼ぶ前にクラスの定義をするように変更すれば直るはず
です。

-- 
	小山 哲志@ビート・クラフト
	koyama@beatcraft.com
	koyama@hoge.org