假设我有两个PHP类一个名为gallery另一个名为image。
在类图像中我想包含类图库,在类图库中我想包含类图像。
如何才能正确地做到这一点-或者完成这一点的最佳方法是什么?最后我想做的是在类image的一些方法中使用类gallery的方法。
例如:我在两个类中都有一个方法"delete"。在类gallery中,该方法用于删除特定的画廊-按id选择。但是在类image中的方法delete还检查被删除的图像是否是图库中的最后一张-如果是,则应该通过将id传递给类gallery的delete方法来删除此图库。
如何才能做到最好?-或者是否有一种完全不同的更好的方法来做这件事?
谢谢你的回答!
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());
}
}
}
使您的图库成为实例化图像类的唯一位置,然后在图像的构造函数中设置一个属性,以便图库传递对自身的引用。
,
// 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比我先举了一个更好的例子