????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.216.171.199 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/tests/ |
Upload File : |
--TEST-- SPL: Iterator aggregating inner iterator's methods --FILE-- <?php class NumericArrayIterator implements Iterator { protected $a; protected $i = 0; public function __construct($a) { echo __METHOD__ . "\n"; $this->a = $a; } public function rewind() { echo __METHOD__ . "\n"; $this->i = 0; } public function valid() { $ret = $this->i < count($this->a); echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n"; return $ret; } public function key() { echo __METHOD__ . "\n"; return $this->i; } public function current() { echo __METHOD__ . "\n"; return $this->a[$this->i]; } public function next() { echo __METHOD__ . "\n"; $this->i++; } public function greaterThan($comp) { echo get_class($this) . '::' . __FUNCTION__ . '(' . $comp . ")\n"; return $this->current() > $comp; } } class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator { public function seek($index) { if ($index < count($this->a)) { $this->i = $index; } echo __METHOD__ . '(' . $index . ")\n"; } } $a = array(1, 2, 3, 4, 5); $it = new LimitIterator(new NumericArrayIterator($a), 1, 3); foreach ($it as $v) { print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; } echo "===SEEKABLE===\n"; $a = array(1, 2, 3, 4, 5); $it = new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3); foreach($it as $v) { print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; } echo "===STACKED===\n"; echo "Shows '2 is greater than 2' because the test is actually done with the current value which is 3.\n"; $a = array(1, 2, 3, 4, 5); $it = new CachingIterator(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3)); foreach($it as $v) { print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; } ?> ===DONE=== <?php exit(0); ?> --EXPECT-- NumericArrayIterator::__construct NumericArrayIterator::rewind NumericArrayIterator::valid(true) NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key NumericArrayIterator::greaterThan(2) NumericArrayIterator::current 2 is less than or equal 2 NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key NumericArrayIterator::greaterThan(2) NumericArrayIterator::current 3 is greater than 2 NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key NumericArrayIterator::greaterThan(2) NumericArrayIterator::current 4 is greater than 2 NumericArrayIterator::next ===SEEKABLE=== NumericArrayIterator::__construct NumericArrayIterator::rewind SeekableNumericArrayIterator::seek(1) NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 2 is less than or equal 2 NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 3 is greater than 2 NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 4 is greater than 2 NumericArrayIterator::next ===STACKED=== Shows '2 is greater than 2' because the test is actually done with the current value which is 3. NumericArrayIterator::__construct NumericArrayIterator::rewind SeekableNumericArrayIterator::seek(1) NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 2 is greater than 2 NumericArrayIterator::next NumericArrayIterator::valid(true) NumericArrayIterator::current NumericArrayIterator::key SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 3 is greater than 2 NumericArrayIterator::next SeekableNumericArrayIterator::greaterThan(2) NumericArrayIterator::current 4 is greater than 2 ===DONE===