[PHP-users 8716] Sessionでクラスの受け渡し

php-users@php.gr.jp php-users@php.gr.jp
Thu, 18 Jul 2002 08:43:19 +0900


はじめまして。いつも参考にさせていただいております。

http://www.pat.hi-ho.ne.jp/dimension/sample/sample_others_session_object.shtml
を参考にSessionを使ったオブジェクトの受け渡しを試してみたところ、

Fatal error: The script tried to execute a method or access a property of an 
incomplete object. Please ensure that the class definition person of the
object you are trying to operate on was loaded _before_ the session was
started in session-main.php on line 16

というエラーが出てしまいました。

print_rで変数を見てみると
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => person
[name] => 東 [age] => 36 [address] => 東京都国立市 ) 
となっておりどうも中身は受け取れているのですが、クラスとして
認識しておりません。
普通の変数は、正常にわたっていました。

もしわかる方がいらしゃいましたら、アドバイス頂けるとありがたいです。
よろしくお願いいたします.

問題のコードを載せておきます。

person.inc クラス定義ファイル
-----------------------------------------------------------------
<?
class Person {
	var $name ;
	var $age;
	var $address;

	function Person() {
		$this->name="";
		$this->age=20;
		$this->address="";
	}

}

?>
-----------------------------------------------------------------
session-login.php  Personクラスを渡す

<?
session_start();
/* セッションに変数を登録 */
session_register("MyPerson");
require_once("person.inc");
?>
<? header("Content-type: text/html;charset=EUC_JP"); ?>
<html><head><title>ログイン</title></head>
<body bgcolor="white">
<?
		$MyPerson=new Person();

		$MyPerson->name="東";
		$MyPerson->age=36;
		$MyPerson->address="東京都国立市";
        print "<a href=\"session-main.php\">メインページへ</a><br>";
?>
</body></html>
-----------------------------------------------------------------
session-main.php   Personクラスを受け取る

<?
    require("./person.inc");
    session_start();
    header("Content-type: text/html;charset=EUC_JP");
?>
<html>
<head><title>セッションメインページ</title></head>
<body bgcolor="white">
<?
	$MyPerson=$_SESSION["MyPerson"];
	print_r($MyPerson);
?>
    <h1>メインメニュー</h1>
    <a href="session-login.php">ログイン画面に戻る</a><br>
<?
	print "Person->Name:     $MyPerson->name<BR>";
	print "Person->age:      $MyPerson->age<BR>";
	print "Person->address:  $MyPerson->address<BR>";

?>
</body></html>


長文失礼いたしました.

-- 
東 信明 <rxq10026@nifty.ne.jp>