2012-12-21 32 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,也不再使用它。 –