Рабочая тетрадь(4)
.pdf
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();
