php - 一个类的实例可以更改另一个类的实例中的变量吗?

标签 php class oop

我刚刚开始使用 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/

相关文章:

php - 为 MySQL 查询添加延迟或暂停以确保安全

php - 如何使用 FOSRest 和 Symfony 3.0 正确执行 REST API POST 调用

php - 在 Cakephp 中使用不等于运算符

php - 什么 php 版本允许这样做?

java - 寻找在 Java 中生成大量对象以添加到 db4o 数据库的最有效方法

php - 使用 Laravel 获取公共(public) IP 地址

javascript - Reactjs sibling 类切换

javascript - 创建在后台与 Promises 一起使用的 EventEmitter 的正确方法

c# - 在流畅的界面中实现条件

javascript - 如何让按钮在日期字段中添加一天