This is a simple PHP class that can be used to manage a collection of items.
The usage is shown at the end.
Collection.php:
<?php
class Collection {
var $elements = array();
var $counter = 0;
var $pointer = 0;
function Collection() {
}
function add($element) {
$this->elements[$this->counter] = $element;
$this->counter++;
$this->pointer++;
}
function remove($element) {
$found = null;
for ($i = 0; $i < count($this->elements); $i++) {
if ($this->elements[$i] == $element) {
$found = $i;
}
}
if ($found != null) {
array_splice($this->elements, $found, 1);
$this->counter--;
$this->pointer--;
}
}
function contains($element) {
for ($i = 0; $i < count($this->elements); $i++) {
if ($this->elements[$i] == $element) {
return true;
}
}
return false;
}
function hasNext() {
return $this->pointer < $this->counter;
}
function hasPrevious() {
return $this->pointer > 0;
}
function next() {
return $this->elements[$this->pointer++];
}
function first() {
$this->pointer = 0;
return $this->elements[$this->pointer];
}
function last() {
$this->pointer = $this->counter;
return $this->elements[$this->pointer];
}
function previous() {
return $this->elements[--$this->pointer];
}
function count() {
return count($this->elements);
}
}
?>
Usage:
<?php
require_once "Collection.php";
$collection = new Collection();
for ($i = 0; $i < 10; $i++) {
$element = "Element $i";
$collection->add($element);
}
$collection->first();
while ($collection->hasNext() ) {
$element = $collection->next();
echo $element . "n";
}
echo "\n";
$collection->previous();
$collection->previous();
$collection->remove("Element 7");
$collection->last();
while ($collection->hasPrevious() ) {
$element = $collection->previous();
echo $element . "n";
}
?>