0

ギャラリーと呼ばれるPHPクラスと画像と呼ばれるPHPクラスが2つあるとします。

クラスの画像にクラスの画像を含めたいのですが、クラスのギャラリーにクラスの画像を含めたいのです。

これを適切に行うにはどうすればよいですか?またはこれを達成するための最良の方法は何ですか?最終的に私ができるようにしたいのは、クラス画像のいくつかのメソッドでクラスギャラリーのメソッドを使用することです。

例:両方のクラスに「delete」メソッドがあります。クラスギャラリーでは、このメソッドを使用して、idで選択された特定のギャラリーを削除します。ただし、クラス画像では、メソッドdeleteは、削除された画像がギャラリー内の最後の画像であるかどうかもチェックします。その場合、クラスギャラリーの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 に答える