Childクラス内でgetTest()関数を呼び出そうとします。最初にExtクラスのインスタンスを初期化するので、メイン プロパティ$extにそれが含まれているはずです。しかし、子クラスはそれを継承せず、得られたエラーメッセージは次のとおりです。
非オブジェクトでのメンバー関数 getTest() の呼び出し
問題はどこにありますか?
<?php
$A = new Main;
class Main
{
protected $ext = null;
function __construct()
{
$this->ext= new Ext();
new Child;
}
}
class Child extends Main
{
function __construct()
{
echo $this->ext->getTest();
}
}
class Ext extends Main
{
public function getTest()
{
return "cool";
}
}
?>
私はそれを別の方法で解決できることを知っています:
class Child
{
private $Main;
function __construct( &$Main ) { ... }
}
しかし、なぜそれがうまくいかないのか理解したい..