php 对象设计父子

php object design parent child

我想在 php 中使用 parent/child classes,但不会以 subclasses 的方式使用。例如,假设我们有一个 class 房子,一个房子有门和 Windows。

class House {
}

class Door {
}

class Window {    
}

我们有两种类型的门,比方说车库门和前门。

class GarageDoor extends Door {
}

class FrontDoor extends Door {
}

如何创建House 和Door 之间以及House 和Window 之间的关系,以便在创建门时必须至少有一个房子并且我应该知道具体的房子。当我删除一个房子时,它的门和 windows 也应该被删除。我该怎么做?

并不是说这是最好的甚至是好的方法,但它应该给你一些可以玩的东西并尝试自己尝试不同的东西:)

class House 
{
    /**
     * An array of all doors that have been installed in the house.
     */
    private $doors = [];

    /**
     * You can install a door in a house.
     */
    public function installDoor(Door $door)
    {
        $this->doors[] = $door;
    }
}

class Door
{
    /**
     * A reference to the house this door is installed in.
     */
    private $house = null;

    /**
     * A house is required before a door can be created.
     */
    public function __construct(House $house)
    {
        $house->installDoor($this);
        $this->house = $house;
    }
}

$house = new House();
$door = new Door($house);