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);
我想在 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);