У меня сейчас 2 класса:
WorkerListClass получает список работ с идентификаторами из базы данных. Для каждого из них вызывается рабочий класс
foreach ($query as $value) {
$result = $this->worker->getWorkerById($value['ID']); // DB Call to get additional data
$this->addData($result);
vardumper::dump($result->getId());
// This results in 1031 and 1528
}
добавить дату очень просто
public function addData(workerClass $worker): void
{
$this->data[] = $worker;
}
Но если я попытаюсь пройти через этот массив, произойдет что-то странное
$result = $this->workerListClass->getWorker()->getData();
foreach ($result as $worker) {
vardumper::dump([
$worker->getId() // this outputs 1528 twice!!!
]);
}
getData ничего особенного не делает
public function getData(): array
{
return $this->data;
}
Может кто-нибудь помочь мне, почему это выводит 1528 дважды?






Проблема найдена. Проблема заключалась в том, что тот же класс был изменен, а не был установлен новый класс.
Использование клона в рабочем списке помогло исправить это:
foreach ($query as $value) {
$localWorker = clone $this->worker; //starts a new instance so that it is not referenced
$result = $localWorker->getWorkerById($value['ID']);
$this->addData($result);
vardumper::dump($result->getId());
}