????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.145.116.193 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/ext/spl/internal/ |
Upload File : |
<?php /** @file iteratoriterator.inc * @ingroup SPL * @brief class IteratorIterator * @author Marcus Boerger * @date 2003 - 2009 * * SPL - Standard PHP Library */ /** @ingroup SPL * @brief Basic Iterator wrapper * @since PHP 5.1 * * This iterator wrapper allows to convert anything that is traversable into * an Iterator. It is very important to understand that most classes that do * not implement Iterator have their reasone to. Most likely they do not allow * the full Iterator feature set. If so you need to provide techniques to * prevent missuse. If you do not you must expect exceptions or fatal errors. * * It is also possible to derive the class and implement IteratorAggregate by * downcasting the instances returned in getIterator. See the following * example (assuming BaseClass implements Traversable): \code class SomeClass extends BaseClass implements IteratorAggregate { function getIterator() { return new IteratorIterator($this, 'BaseClass'); } } \endcode * * As you can see in the example this approach requires that the class to * downcast to is actually a base class of the specified iterator to wrap. * Omitting the downcast in the above example would result in an endless loop * since IteratorIterator::__construct() would call SomeClass::getIterator(). */ class IteratorIterator implements OuterIterator { /** Construct an IteratorIterator from an Iterator or an IteratorAggregate. * * @param iterator inner iterator * @param classname optional class the iterator has to be downcasted to */ function __construct(Traversable $iterator, $classname = null) { if ($iterator instanceof IteratorAggregate) { $iterator = $iterator->getIterator(); } if ($iterator instanceof Iterator) { $this->iterator = $iterator; } else { throw new Exception("Classes that only implement Traversable can be wrapped only after converting class IteratorIterator into c code"); } } /** \return the inner iterator as passed to the constructor */ function getInnerIterator() { return $this->iterator; } /** \return whether the iterator is valid */ function valid() { return $this->iterator->valid(); } /** \return current key */ function key() { return $this->iterator->key(); } /** \return current value */ function current() { return $this->iterator->current(); } /** forward to next element */ function next() { return $this->iterator->next(); } /** rewind to the first element */ function rewind() { return $this->iterator->rewind(); } /** Aggregate the inner iterator * * @param func Name of method to invoke * @param params Array of parameters to pass to method */ function __call($func, $params) { return call_user_func_array(array($this->iterator, $func), $params); } /** The inner iterator must be private because when this class will be * converted to c code it won't no longer be available. */ private $iterator; } ?>