0

假设我有两个 PHP 类,一个叫做gallery,一个叫做image

在班级图片中我想包含班级画廊,在班级画廊中我想包含班级图片。

怎么能正确地做到这一点 - 或者什么是实现这一目标的最佳方法?我最终想要做的是在类图像的一些方法中使用类库的方法。

例如:我在两个类中都有一个“删除”方法。在类画廊中,该方法用于删除特定画廊 - 由 id 选择。但是在类图像中,方法 delete 还检查删除的图像是否是画廊中的最后一张 - 如果是这样,则应该通过将 id 传递给类画廊的删除方法来删除该画廊。

怎样才能做到最好?- 或者有没有完全不同的更好的方法来做这样的事情?

谢谢你的回答!

4

2 回答 2

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());
      }
   }
}
于 2012-12-21T21:35:56.983 回答
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 用一个更好的例子打败了我

于 2012-12-21T21:39:00.747 回答