mam pewien problem z klonowaniem obiektów. Może od razu wkleję kod:
public function execute() { if ($this->has_sheduler()) { $task = clone $this; } $this->object->execute($this->methods, $this->progress); $this->progress->finish(); if ($this->has_sheduler()) { $task->set_sheduler(new Task_Sheduler($this->sheduler->get_plan())); $task_list = new Task_List(); $task_list->add_task($task, TRUE); } }
Generalnie chodzi mi o to aby dodać zadanie (add_task()) będące kopią aktualnego obiektu. Poprzez $this->object->execute() wykonuję na aktualnym obiekcie pewne operacje, ale nie chciałbym aby były one uwzględnione w kopii obiektu ($task), a w aktualnej wersji kodu tak właśnie jest. Przenosząc cały kod drugiego warunku do pierwszego wszystko jest OK (bo metoda execute() się jeszcze nie wykonała). Wolałbym jednak pozostawić zapis nowego zadania w tym miejscu, ponieważ chciałbym aby w razie problemu z execute() nie tworzył się nowy wpis zadania.
Nie wiem jak to ugryźć, nie wiem co robię źle. Wewnątrz aktualnego obiektu ($this) mam inne obiekty i być może musiałbym je klonować (wymuszenie w __clone) ale nie wiem za bardzo jak to zrobić.
Pozdrawiam,
pion