我刚刚开始使用 OOP,所以这些是我的第一步!
我正在尝试构建一个简单的预订系统,用户可以在其中预订另一个用户通过日历创建的时间段。我正处于项目的早期阶段,因此数据库尚未建立,我目前正在摆弄日类和时段类,并试图弄清楚如何让它们互动。
这是我的代码:
class dayCL {
public $dayInMonth;
public $numBookingSlotsOnDay;
public function __construct($dayInMonth) {
$this->dayInMonth = $dayInMonth;
}
public function getNumBookingSlotsOnDay(){
return "Booking slots: " . $this->numBookingSlotsOnDay;
}
public function numBookingSlotsOnDay(){
$this->numBookingSlotsOnDay = $this->numBookingSlotsOnDay + 1 ;
}
};
class bookingSlotCL {
public $startTime;
public function __construct($startTime) {
$this->startTime = $startTime;
}
public function output(){
return "Start: " . $this->startTime;
}
};
numBookingSlotsOnDay
函数在调用时按预期工作,但是否可以在 bookingSlotCL
中集成对它的调用,因此在 的每个实例化时调用它code>bookingSlotCL
?
例子:
$day1 = new dayCL(1);
$bookingSlot1 = new bookingSlotCL(1);
$bookingSlot2 = new bookingSlotCL(1);
两个预订时段都放在 $day1
,所以 $day1->getNumBookingSlotsOnDay
应该返回“2”。
日历的设计使得所有的日子都被实例化为一个dayCL
实例,这意味着一个bookingSlotCL
实例总是有一个dayCL
要附加到的实例。
最佳答案
您应该将所有 bookingSlotCL
实例添加到您的 dayCL
实例中的一个数组中,如下所示:
$day1 = new dayCL(1);
$day1->addBooking(new bookingSlotCL());
addBooking
方法可能如下所示:
public function addBooking(dayCL $day) {
$this->days[] = $day;
$day->startTime = $this->dayInMonth
}
这样您甚至可以更改您的 getNumBookingSlotsOnDay
方法来动态确定预订时段的数量:
public function getNumBookingSlotsOnDay() {
return count($this->days);
}
关于php - 一个类的实例可以更改另一个类的实例中的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763563/