/** * Make sure all object references are cloned. * */ public function postClone() { // Images / resources if (is_object($this->bannerImage)) { // Clone does not work for this kind of reference. // Manual copy mode engaged. $this->bannerImage = $this->bannerImage->copy(); } // Tags. $tempTags = new ArrayCollection(); foreach ($this->tags as $tag) { $tempTags->add($tag); } $this->tags = $tempTags; // Knowledge Prerequisites. $tempKnowledgePrerequisites = new ArrayCollection(); foreach ($this->knowledgePrerequisites as $knowledgePrerequisite) { $newKnowledgePrerequisite = clone $knowledgePrerequisite; $newKnowledgePrerequisite->setQuiz($this); $tempKnowledgePrerequisites->add($knowledgePrerequisite); } $this->knowledgePrerequisites = $tempKnowledgePrerequisites; $tempExercises = new ArrayCollection(); foreach ($this->exercises as $exercise) { $newExercise = clone $exercise; $newExercise->postClone(); $newExercise->setQuiz($this); $tempExercises->add($newExercise); } $this->exercises = $tempExercises; $tempSubjects = new ArrayCollection(); foreach ($this->subjects as $subject) { $tempSubjects->add($subject); } $this->subjects = $tempSubjects; $tempLevels = new ArrayCollection(); foreach ($this->levels as $level) { $tempLevels->add($level); } $this->levels = $tempLevels; }
/** * Implementation of clone magic method. */ public function postClone() { if (!is_null($this->image)) { $this->image = $this->image->copy(); } }
/** * Implementation of custom clone method since * native php __clone raises error in Flow. * Override in exercises which have additional references to objects. */ public function postClone() { if (is_object($this->image)) { $this->image = $this->image->copy(); } if (is_object($this->pdfFile)) { $this->pdfFile = $this->pdfFile->copy(); } if (is_object($this->soundFile)) { $this->soundFile = $this->soundFile->copy(); } }