2011-08-20 96 views
1

我想加載自己的php類的擴展。我不明白爲什麼它沒有加載。是否有可能從自己加載類擴展?從父類內部加載類擴展PHP

這裏是我究竟是什麼意思的代碼示例。

class Class_B{ 
    public function hi(){ 
      echo('Hello world!'); 
    }  
} 

class Class_D extends parent{ 
    public function Class_D(){ 
      //--> Here is the problematic line 
      $this->class_b->hi(); 
    }  
} 

class parent{ 
    public $class_b; 

    public function __construct(){ 
      $this->class_b = new Class_B; 
      new Class_D(); 
    } 
} 

此代碼出現此錯誤。

調用一個成員函數h()的一個非對象在 /path/to/your/application/test.php上 線59

我需要調用Class_B: :hi()函數使用相同的語法。我讀了很多,但我沒有找到我需要的東西。在CodeIgniter中,不同的庫就是這樣調用的。我想在我的程序中實現類似的功能。 謝謝。

+1

究竟是*問題*本?任何錯誤?儘管在子類和父類之間創建循環依賴關係當然不是一個好主意。 – deceze

回答

4

你肯定不希望調用new Class_D()從父類的構造內。

我認爲你正在試圖做的是:

class parent { 
    protected $b; 

    public function __construct() { 
      $this->b = new Class_B(); 
    } 
} 

class Class_D extends parent { 
    function __construct() { 
     parent::__construct(); 

     $this->b->hi(); 
    } 
} 
+0

非常感謝。它完美的作品。看起來我忘了調用父類的構造函數 –

1

充分利用hi()靜:

class Class_B{ 

    public static function hi(){ 
      echo('Hello world!'); 
    } 

} 

Class_B::hi();