2012-12-21 24 views
0

假設我有兩個PHP類別一個叫gallery和一個叫圖片我怎樣才能在對方中包含兩個類?

在班級圖片中,我想包括班級圖庫,並在班級圖庫中添加班級圖片。

這怎麼能正確完成 - 或者最好的方法來完成這個? 我最終想做的是在類圖像的某些方法中使用類庫的方法。

例如:我在這兩個類中都有一個「刪除」方法。 在類庫中,該方法用於刪除特定的圖庫 - 由id選擇。但在班級圖片該方法刪除也檢查刪除的圖像是否是一個畫廊中的最後一個 - 如果是這樣的話,應該通過將該ID傳遞給類庫的刪除方法來刪除該畫廊。

這怎麼能做得最好? - 還是有一種完全不同的更好的方式來做這樣的事情?

感謝您的支持!

+1

'類圖片延伸gallery'衝? –

+1

我想你想'require_once'? – zebediah49

回答

3

構圖.. image實例具有它所屬的庫的一個實例(如果它可以屬於複雜事物的多個庫)。

class Image { 
    private $gallery; 
    private $db; 
    public function __construct(Gallery $gallery, DB $db) { 
     $this->gallery = $gallery; 
     $this->db = $db; 
    } 

    public function delete($id) { 
     $this->db->deleteImage($id); 
     if ($this->gallery->isEmpty()) { 
     $this->gallery->delete($this->gallery->getID()); 
     } 
    } 
} 
+0

感謝您的回答!我是面向對象的新手,但你的回答明確地告訴我要採取正確的方向。 –

0

讓您的畫廊實例圖像類的唯一的地方,然後設置在圖像的構造屬性爲畫廊在對自身的引用傳遞。

如:

// in class Image 
... 
function Image($gallery) { 
    $this->gallery = $gallery; 
} 
... 

// in class Gallery 
... 
function get_image($id) { 
    $img = new Image($this); 
    ... 
    return $img; 
} 
... 

$image = $gallery->get_image(1); 

編輯: 貌似ExplosionPills打我一個更好的例子

+0

我也建議不要使用'新形象'..你知道,設計一個接口等等等等。 –

+0

是的。我只是寫作,因爲我記得它。我其實不喜歡PHP,也不再使用它。 –