2016-07-26 124 views
1

我有一個主類中index.php使用包括在課堂上正確

class myClass { 

    public function lorem() { 
     include_once 'extendClass.php'; 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass(); 

我需要include_once 'extendClass.php'lorem()函數中。

在我extendClass.php文件,我謹向與類功能:

class extendClass extends myClass { 

    public function lorem(){ 
     echo "foo bar"; 
     parent::lorem(); 

    } 

} 

當我使用index.phpnew extendClass(),我得到一個錯誤,因爲include_once()不會被觸發。這個難題的解決方案是什麼?

注意:include_once()必須在myClass之內。

+0

不能嵌套類之外聲明。 – Rizier123

+0

@ Rizier123在這種情況下,我唯一的選擇是創建兩個完全分離的類嗎?請詳細說明。 –

+0

是的。此外,嵌套類甚至能夠從尚未定義的類中擴展出來?所以你可能想要在它下面定義它。 – Rizier123

回答

3

這裏有兩個問題

  1. 你正在創建一個改寫了該lorem()功能的子類。您將不得不明確地致電parent::lorem()以獲得它
  2. 即使您調用它,執行include的父功能意味着該函數中定義的任何內容都是本地範圍爲該功能。因此,這意味着你的孩子函數不能繼承它(至少在沒有某種return聲明)

你需要移動包括類聲明

include_once 'extendClass.php'; 
class myClass { 

    public function lorem() { 
    } 

    public function __construct() { 
     $this->lorem(); 
    } 

} 

// run class 
new extendClass();