Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рабочая тетрадь(4)

.pdf
Скачиваний:
36
Добавлен:
10.02.2016
Размер:
7 Мб
Скачать
☆

AppendIterator extends IteratorIterator implements OuterIterator,

Traversable, Iterator

$it1 = new ArrayIterator(array(1, 2, 3));

$it2 = new ArrayIterator(array(4, 5, 6));

$ait = new AppendIterator();

$ait -> append($it1);

$ait -> append($it2);

foreach ($ait as $value)

echo $value . " "; // 1 2 3 4 5 6

SplFileInfo

SplFileObject extends SplFileInfo

implements RecursiveIterator, Traversable, Iterator, SeekableIterator

$file = new SplFileObject("test.txt");

$file -> seek(3);

echo $file -> current();

DirectoryIterator extends SplFileInfo

implements SeekableIterator, Traversable, Iterator

class MyClass extends FilterIterator{ public function accept() {

return !$this->getInnerIterator()->current()->isDir();

}

}

$dit = new DirectoryIterator(".");

$it = new MyClass($dit);

foreach ($it as $file)

echo $file -> getFileName() . "\n"; // экземпляр класса SplFileInfo

ArrayObject implements IteratorAggregate, ArrayAccess, Traversable, Iterator, Countable

$names = array("John", "Mike", "Вася", "Петя");

$arrayObj = new ArrayObject($names);

$it = $arrayObj -> getIterator();

for($it; $it -> valid(); $it -> next())

echo $it -> key() . ": " . $it -> current();

$arrayObj -> append("Федя");

$arrayObj -> natcasesort();

$arrayObj -> offsetUnset(2);

iterator_count

$it = new ArrayIterator(array(1, 2, 3, 4));

echo iterator_count($it);

iterator_apply

$it = new ArrayIterator(array("a", "b", "c"));

function upperCase(Iterator $it) {

echo strToUpper($it->current()); return true;

}

iterator_apply($it, "upperCase", array($it));

iterator_to_array

$it = new GlobIterator("*.php");

var_dump(iterator_to_array($it));

SplDoublyLinkedList

SplStack

SplQueue

SplHeap

SplMaxHeap

SplMinHeap

SplPriorityQueue

SplFixedArray

SplObjectStorage

SplObjectStorage implements ArrayAccess, Serializable, Traversable, Iterator, Countable

$storage = new SplObjectStorage();

$obj1 = new stdClass();

$obj2 = new stdClass();

$storage[$obj1] = "Admin";

$storage[$obj2] = "User";

echo

$storage[$obj1]

.

"\n";

echo

$storage[$obj2]

.

"\n";

abstract SplHeap implements Iterator, Countable

SplMinHeap extends SplHeap implements Iterator, Countable

SplMaxHeap extends SplHeap implements Iterator, Countable

$minHeap = new SplMinHeap();

$minHeap -> insert(2);

$minHeap -> insert(3);

$minHeap -> insert(1);

foreach ($minHeap as $value)

echo $value . " "; // 1 2 3

Наличие элементов с одинаковым значением не рекомендуется

SplDoublyLinkedList implements Iterator, Countable, ArrayAccess

SplQueue extends SplDoublyLinkedList

class Work {

public function __construct($title) { $this->title = $title;

}

public function doIt(){return $this->title;}

}

$work1 = new Work("Сходить в магазин");

$work2 = new Work("Прочитать книгу");

$queue = new SplQueue();

$queue -> enqueue($work1);

$queue -> enqueue($work2);

while ($queue -> count() > 0)

echo $queue -> dequeue() -> doIt();

SplPriorityQueue implements Iterator, Countable

class Work {

public function __construct($title) { $this->title = $title;

}

public function doIt(){return $this->title;}

}

$work1 = new Work("Сходить в магазин");

$work2 = new Work("Прочитать книгу");

$queue = new SplPriorityQueue();

$queue -> insert($work1, 1);

$queue -> insert($work2, 2);

foreach ($queue as $work)

echo $work -> doIt();