2010-07-03 66 views
0

我有兩個獨立的對象,一個主對象和一個「子對象」。它的物理上不是真正的子對象,因爲我通過構造函數將整個父對象添加到子對象中。挖掘兩個或多個對象

像這樣:

class core 
{ 

    public function __get($class) 
    { 
     $this->load($class); 
    } 

    public function load($class, $file = null, $lib = true) 
    { 
     if($file == null) 
      $file = $class; 

     if($lib == true) 
      include(LIBPATH.$file.PHP); 
     else 
      include(SYSPATH.$file.PHP); 

     $this->$class = new $class($this); 
    } 

} 

與 「子」:

class Child implements myStruct 
{ 
    public function __construct($obj) 
    { 
     $this->obj =& $obj; 
    } 
} 

這是醜陋的,因爲我認爲,或者是該接受的解決方案?

回答

3

這絕對不是最理想的。第一個:

$this->obj =& $obj; 

這是沒有必要的。從PHP 5開始,通過引用在用戶空間中引用對象。當你複製一個對象時,你實際上正在複製一個引用。您可以在這裏刪除參考運算符:$this->obj = $obj

查看spl_autoload用於自動加載類。這不等同於你正在做的事 - 你正在使用某種容器來保存對象的引用(每個類只有一個對象),但我懷疑它是你想要的。

+0

我認爲spl_autoload不適合我想要的,因爲核心類需要加載多個對象。通常存儲在不同的文件夾中 – 2010-07-03 07:06:38

+1

您可以將這些不同的文件夾放在包含的路徑中,或者您可以傳遞一個實現您的邏輯的自定義函數「spl_autoload_register」。 – Artefacto 2010-07-03 07:32:43