diff options
Diffstat (limited to 'ext/spl/spl.php')
-rwxr-xr-x | ext/spl/spl.php | 340 |
1 files changed, 0 insertions, 340 deletions
diff --git a/ext/spl/spl.php b/ext/spl/spl.php deleted file mode 100755 index 2edde96154..0000000000 --- a/ext/spl/spl.php +++ /dev/null @@ -1,340 +0,0 @@ -<?php - -/* Standard PHP Library - * - * (c) M.Boerger 2003 - */ - -/*! \brief Interface to foreach() construct - * - * Any class that implements this interface can for example be used as - * the input parameter to foreach() calls which would normally be an - * array. - * - * The class must implement the function new_iterator which must return - * an object which implements the interface spl_forward. - * - * \see spl_forward, spl_sequence, spl_forward_assoc, spl_sequence_assoc - */ -interface spl_iterator { - - /*! \brief Create a new iterator - * - * \return an object that implements the interface spl_forward. - */ - function new_iterator(); -} - -/*! \brief Simple forward iterator - * - * Any class that implements this interface can be used as the - * return of a foreach interface. And hence the class itself - * can be used as a parameter to be iterated (normally an array). - * - * \code - class c implements spl_iterator, spl_forward { - private $num = 0; - function new_iterator() { - $this->num = 0; - return $this; - } - function current() { - return $this->num; - } - function next() { - $this->num++; - } - function has_more() { - return $this->num < 5; - } - } - - $t = new c(); - - foreach($t as $num) { - echo "$num\n"; - } - \endcode - * - * A very interesting usage scenario are for example database queries. - * Without this interface you need to do it without foreach or fetch the - * whole rowset into an array. - * - * In the above code the class implements both the foreach and the - * forward interface. Doing this you cannot have nested foreach calls. - * If you need this you must split the two parts. - * - * \code - class c implements spl_iterator { - public $max = 3; - function new_iterator() { - return new c_iter($this); - } - } - class c_iter implements spl_forward { - private $obj; - private $num = 0; - function __construct($obj) { - $this->obj = $obj; - } - function current() { - return $this->num; - } - function next() { - $this->num++; - } - function has_more() { - return $this->num < $this->obj->max; - } - } - - $t = new c(); - - foreach($t as $outer) { - foreach($t as $inner) { - echo "$outer,$inner\n"; - } - } - \endcode - * - * You can also use this interface with the for() construct. - * - * \code - class c implements spl_iterator { - public $max = 3; - function new_iterator() { - return new c_iter($this); - } - } - class c_iter implements spl_forward { - private $obj; - private $num = 0; - function __construct($obj) { - $this->obj = $obj; - } - function current() { - return $this->num; - } - function next() { - $this->num++; - } - function has_more() { - return $this->num < $this->obj->max; - } - } - - $t = new c(); - - for ($iter = $t->new_iterator(); $iter->has_more(); $iter->next()) { - echo $iter->current() . "\n"; - } - \endcode - */ -interface spl_forward { - - /*! \brief Retrieve the current currentent - * - * \return \c mixed current element or \c false if no more elements - */ - function current(); - - /*! \brief Forward to next element. - */ - function next(); - - /*! \brief Check if more elements are available. - * - * This method is meant to be called right after calls to rewind() or - * next(). When you use foreach hooking then this is done automatically - * but you can use it inside a for loop yourself: - * \code - for(; $it->has_more(); $it->next()) { ... } - \endcode - * - * \return \c bool whether or not more elements are available - */ - function has_more(); -} - -/*! \brief A restartable iterator. - * - * This iterator allows you to implement a restartable iterator. That - * means the iterator can be rewind to the first element after accessing - * any number of elements. - * - * \note If you use sequence in foreach then rewind() will be called - * first. - */ -interface spl_sequence extends spl_forward { - - /*! Restart the sequence by positioning it to the first element. - */ - function rewind(); -} - -/*! \brief associative interface - * - * This interface allows to implement associative iterators - * and containers. - */ -interface spl_assoc { - - /*! \brief Retrieve the current elements key - * - * \return \c mixed current key or \c false if no more elements - */ - function key(); -} - -/*! \brief associative foreach() interface - * - * This interface extends the forward interface to support keys. - * With this interface you can do: - * \code - $t = new c(); - foreach($t as $key => $elem). - \endcode - */ -interface spl_assoc_forward implements spl_forward, spl_assoc { -} - -/*! \brief associative sequence - */ -interface spl_assoc_sequence implements spl_sequence, spl_assoc { -} - -/*! \brief array read only access for objects - */ -interface spl_array_read { - - /*! Check whether or not the given index exists. - * The returned value is interpreted as converted to bool. - */ - function exists($index); - - /*! Read the value at position $index. - * This function is only beeing called if exists() returns true. - */ - function get($index); -} - -/*! \brief array read/write access for objects. - * - * The following example shows how to use interface array_access: - * \code - class array_emulation implemets spl_array_access { - private $ar = array(); - function exists($index) { - return array_key_exists($index, $this->ar); - } - function get($index) { - return $this->ar[$index]; - } - function set($index, $value) { - $this->ar[$index] = $value; - } - function del($index) { - unset($this->ar[$index]); - } - } - \endcode - */ -interface spl_array_access implements spl_array_read { - - /*! Set the value identified by $index to $value. - */ - function set($index, $value); - - /*! Delete (unset) the value identified by $index. - */ - function del($index); -} - -/*! \brief An array wrapper - * - * This array wrapper allows to recursively iterate over Arrays and Objects. - * - * \see spl_array_it - */ -class spl_array implements spl_iterator { - - /*! Construct a new array iterator from anything that has a hash table. - * That is any Array or Object. - * - * \param $array the array to use. - */ - function __construct($array); - - /*! \copydoc spl_iterator::new_iterator - */ - function new_iterator(); -} - -/*! \brief An array iterator - * - * This iterator allows to unset and modify values and keys while iterating - * over Arrays and Objects. - * - * To use this class you must instanciate spl_array. - */ -class spl_array_it implements spl_sequence_assoc { - - /*! Construct a new array iterator from anything that has a hash table. - * That is any Array or Object. - * - * \param $array the array to use. - */ - private function __construct($array); - - /*! \copydoc spl_sequence::rewind - */ - function rewind(); - - /*! \copydoc spl_forward::current - */ - function current(); - - /*! \copydoc spl_assoc::key - */ - function key(); - - /*! \copydoc spl_forward::next - */ - function next(); - - /*! \copydoc spl_forward::has_more - */ - function has_more(); -} - -/*! \brief Directory iterator - */ -class spl_dir implements spl_sequence { - - /*! Construct a directory iterator from a path-string. - * - * \param $path directory to iterate. - */ - function __construct($path); - - /*! \copydoc spl_sequence::rewind - */ - function rewind(); - - /*! \copydoc spl_forward::current - */ - function current(); - - /*! \copydoc spl_forward::next - */ - function next(); - - /*! \copydoc spl_forward::has_more - */ - function has_more(); - - /*! \return The opened path. - */ - function get_path(); -} -?>
\ No newline at end of file |