[PHP-users 23920] 継承されたクラスの記述順序についての疑問

Hiroshi Ninomiya nino @ hat.hi-ho.ne.jp
2004年 12月 16日 (木) 10:44:49 JST


二宮といいます
いつも参考にさせていただいております。

継承されたクラスの記述順序について、疑問に思ったので質問します。

以下の2つのクラスがあります
1 fooクラス
2 barクラス fooクラスを継承

以下の5つのコードを実行すると最初のコードのみ

Fatal error: Cannot instantiate non-existent class: bar in... on line 6

のエラーが発生します。
6行目は $bar = new bar();

私の頭の中では
2,3のコードがOKなら、最初のコードも動作すると思うのですが
特に 1と2のコードは同じと理解してました。

この違いについて どなたかアドバイスお願いします。

別に動くように書けばいいか って思ったのですが なんとなく頭がすっきりし
ないので

マニュアルや過去ログを探してみたのですが、それらしき記述は見つけられませ
んでした。
よろしくお願いします。


環境は以下です。
RH9
Apache1.3.33
PHP4.3.9



1 動作NG
<?php
include_once( "fooClass.php" ); //class foo を記述したファイル

$foo = new foo();
$bar = new bar();

class bar extends foo {
function bar( ) { }
}
?>
エラー:
Fatal error: Cannot instantiate non-existent class: bar in... on line 6


2 動作OK
<?php
class foo {
function foo() { }
}

$foo = new foo();
$bar = new bar();

class bar extends foo {
function bar() { }
}
?>

3 動作OK
<?php
$foo = new foo();
$bar = new bar();

class foo {
function foo() { }
}

class bar extends foo {
function bar() { }
}
?>


4 動作OK
<?php
include_once( "fooClass.php" ); //class foo を記述したファイル
class bar extends foo {
function bar( ) { }
}

$foo = new foo();
$bar = new bar();
?>


5 動作OK
<?php
include_once( "fooClass.php" ); //class foo を記述したファイル
include_once( "barClass.php" ); //class bar を記述したファイル

$foo = new foo( );
$bar = new bar();
?>

以上、よろしくお願いします。



PHP-users メーリングリストの案内