elements = $elements; $this->position = 0; } function rewind() { $this->position = 0; } function current() { return $this->elements[ $this->position ]; } function key() { return $this->position; } function next() { ++$this->position; } function valid() { return isset( $this->elements[ $this->position ] ); } /** * @param $callback * * @return array */ function map($callback) { $result = array(); foreach( $this->elements as $element ) { $result[] = $callback( $element ); } return $result; } /** * @param $callback * * @return null */ function find($callback) { foreach( $this->elements as $element ) { if( $callback( $element ) ) { return $element; } } return null; } /** * (PHP 5 >= 5.1.0)
* Count elements of an object * @link http://php.net/manual/en/countable.count.php * @return int The custom count as an integer. *

*

* The return value is cast to an integer. */ public function count() { return count( $this->elements ); } /** * Whether a offset exists * @link http://php.net/manual/en/arrayaccess.offsetexists.php * @param mixed $offset

* An offset to check for. *

* @return boolean true on success or false on failure. *

*

* The return value will be casted to boolean if non-boolean was returned. * @since 5.0.0 */ public function offsetExists($offset) { return isset( $this->elements[ $offset ] ); } /** * Offset to retrieve * @link http://php.net/manual/en/arrayaccess.offsetget.php * @param mixed $offset

* The offset to retrieve. *

* @return mixed Can return all value types. * @since 5.0.0 */ public function offsetGet($offset) { return $this->elements[ $offset ]; } /** * Offset to set * @link http://php.net/manual/en/arrayaccess.offsetset.php * @param mixed $offset

* The offset to assign the value to. *

* @param mixed $value

* The value to set. *

* @return void * @since 5.0.0 */ public function offsetSet($offset, $value) { $this->elements[ $offset ] = $value; } /** * Offset to unset * @link http://php.net/manual/en/arrayaccess.offsetunset.php * @param mixed $offset

* The offset to unset. *

* @return void * @since 5.0.0 */ public function offsetUnset($offset) { unset( $this->elements[ $offset] ); } /** * Return a random value out of the collection. * * @return mixed */ public function random() { $key = array_rand( $this->elements ); return $this->elements[ $key ]; } }