はてなダイアリー – Harukiからの平面波しかし、クラスが外部ファイルで定義されている場合、以下のようにするとエラーが出るので注意する。
$obj = new foo; require_once ‘class.foo.php’;
これ、セッションに保存したオブジェクトを取り出すところでハマりました。 セッションからオブジェクトを復元するのにはunserialize()関数が使われているのでsession_start()より前にクラスファイルをrequireしとかないとPHPが何のオブジェクトなのか分からないので__PHP_Incomplete_Classになってしまいます。
取り出した物を見てみるとデータとしては完全にそろってる。でも何のクラスなのかわからないのでエラー。
これはガムを知らない民族の前に置いてあるガムみたいなものかと。おれらは目の前にあるものがガムクラスのインスタンスだと分かっているのでどんな振る舞いをするのかも知っている。しかしガムというものを知らない人の前に置かれたガムは謎のオブジェクト。ガムを知らないのでどんな振る舞いをするのかはさっぱりわからない、しかしデータだけは目の前にある。
「現実世界はそんなもの(クラスはわからないがインスタンスが目の前にある)ばかりなのでオブジェクト指向を無理矢理当てはめようとしても失敗する。」というのを何かで読んだ気がします。