Пример #1
0
 /**
  * Make a deep clone of a fieldset
  *
  * @return void
  */
 public function __clone()
 {
     $items = $this->iterator->toArray(PriorityList::EXTR_BOTH);
     $this->elements = array();
     $this->fieldsets = array();
     $this->iterator = new PriorityList();
     $this->iterator->isLIFO(false);
     foreach ($items as $name => $item) {
         $elementOrFieldset = clone $item['data'];
         $this->iterator->insert($name, $elementOrFieldset, $item['priority']);
         if ($elementOrFieldset instanceof FieldsetInterface) {
             $this->fieldsets[$name] = $elementOrFieldset;
         } elseif ($elementOrFieldset instanceof ElementInterface) {
             $this->elements[$name] = $elementOrFieldset;
         }
     }
     $this->iterator->rewind();
     // Also make a deep copy of the object in case it's used within a collection
     if (is_object($this->object)) {
         $this->object = clone $this->object;
     }
 }