Prado\Collections\TPriorityList::copyFrom PHP Метод

copyFrom() публичный Метод

Note, existing data in the map will be cleared first.
public copyFrom ( $data )
    public function copyFrom($data)
    {
        if ($data instanceof TPriorityList) {
            if ($this->getCount() > 0) {
                $this->clear();
            }
            foreach ($data->getPriorities() as $priority) {
                foreach ($data->itemsAtPriority($priority) as $index => $item) {
                    $this->insertAtIndexInPriority($item, $index, $priority);
                }
            }
        } else {
            if (is_array($data) || $data instanceof \Traversable) {
                if ($this->getCount() > 0) {
                    $this->clear();
                }
                foreach ($data as $key => $item) {
                    $this->add($item);
                }
            } else {
                if ($data !== null) {
                    throw new TInvalidDataTypeException('map_data_not_iterable');
                }
            }
        }
    }

Usage Example

Пример #1
0
 public function testCopyFromTPriorityList()
 {
     $plist = new TPriorityList();
     $plist->copyFrom($this->plist);
     $this->assertEquals(0, $plist->indexOf($this->pfirst));
     $this->assertEquals(1, $plist->indexOf($this->pitem1));
     $this->assertEquals(2, $plist->indexOf($this->pitem2));
     $this->assertEquals(3, $plist->indexOf($this->pitem3));
     $this->assertEquals(-10000000, $plist->priorityOf($this->pfirst));
     $this->assertEquals(10, $plist->priorityOf($this->pitem1));
     $this->assertEquals(10, $plist->priorityOf($this->pitem2));
     $this->assertEquals(100, $plist->priorityOf($this->pitem3));
     $this->assertEquals(-1, $plist->indexOf($this->pitem4));
 }