public function work() { if ($this->allWork->isAllWorkDone() && $this->currentTask->getWorkingHours() == 0) { echo 'No more tasks !!!' . PHP_EOL; return true; } if ($this->hoursLeft == 0) { $this->startWorkingDay(); } if (!$this->getCurrentTask()) { $this->setCurrentTask($this->allWork->getNextTask()); } if ($this->currentTask->getWorkingHours() >= $this->hoursLeft) { echo $this->name . ' is working on task ' . $this->currentTask->getName() . ' for ' . $this->hoursLeft . ' hours.' . PHP_EOL; $this->currentTask->setWorkingHours($this->currentTask->getWorkingHours() - $this->hoursLeft); $this->hoursLeft = 0; } else { echo $this->name . ' is working on task ' . $this->currentTask->getName() . ' for ' . $this->currentTask->getWorkingHours() . ' hours.' . PHP_EOL; $this->hoursLeft = $this->hoursLeft - $this->currentTask->getWorkingHours(); $this->currentTask->setWorkingHours('0'); if (!$this->allWork->isAllWorkDone()) { $this->setCurrentTask($this->allWork->getNextTask()); } } if ($this->hoursLeft > 0) { $this->work(); } }