function key() { return ($this->getIteratorIndex() ? '@' : '') . parent::key(); }
function key() { echo __METHOD__ . '; '; return parent::key(); }
/** * {@inheritdoc} */ public function key() { $this->lazyAppend(); return parent::key(); }
/** * Support for readdir(). * * @return string|bool the next filename, or false if there are no more * files in the directory * @see http://www.php.net/manual/en/function.readdir.php */ public function dir_readdir() { while ($this->_directoryIterator->valid()) { $key = $this->_directoryIterator->key(); $current = $this->_directoryIterator->current(); $iterator = $this->_directoryIterator->getInnerIterator(); try { $this->_directoryIterator->next(); } catch (Services_Amazon_S3_Exception $e) { return false; } if (is_string($current)) { // Return "." or ".." return $key; } if ($iterator instanceof Services_Amazon_S3_ObjectIterator) { // Strip prefix and any trailing slash $key = rtrim(substr($key, strlen($iterator->prefix)), '/'); } else { // When iterating over buckets, $current is a bucket instance $key = $current->name; } // Subdirectories may be represented in two different ways - make // sure not to report duplicates $subdirectory = false; if (substr($key, -9) == '_$folder$') { $subdirectory = $key = substr($key, 0, -9); } elseif ($current instanceof Services_Amazon_S3_Prefix) { $subdirectory = $key; } if ($subdirectory) { if (!in_array($key, $this->_subdirectories)) { $this->_subdirectories[] = $key; return $key; } } else { return $key; } } return false; }
[expect php] [file] <?php $pizzas = new ArrayIterator(array('Margarita', 'Siciliana', 'Hawaii')); $toppings = new ArrayIterator(array('Cheese', 'Anchovies', 'Olives', 'Pineapple', 'Ham')); $appendIterator = new AppendIterator(); $appendIterator->append($pizzas); $appendIterator->append($toppings); foreach ($appendIterator as $key => $item) { echo "{$key} => {$item}", PHP_EOL; } $appendIterator->append($toppings); while ($appendIterator->valid()) { echo $appendIterator->key() . " => " . $appendIterator->current() . "\n"; $appendIterator->next(); }
public function testResultsetAppendIterator() { if (!$this->_prepareTestMysql()) { $this->markTestSkipped("Skipped"); return; } // see http://php.net/manual/en/appenditerator.construct.php $iterator = new \AppendIterator(); $robots_first = Robots::find(array('limit' => 2)); $robots_second = Robots::find(array('limit' => 1, 'offset' => 2)); $robots_first_0 = $robots_first[0]; $robots_first_1 = $robots_first[1]; $robots_second_0 = $robots_second[0]; $iterator->append($robots_first); $iterator->append($robots_second); $iterator->rewind(); $this->assertTrue($iterator->valid()); $this->assertEquals($iterator->key(), 0); $this->assertEquals($iterator->getIteratorIndex(), 0); $this->assertEquals(get_class($iterator->current()), 'Robots'); $this->assertEquals($robots_first_0->name, $iterator->current()->name); $iterator->next(); $this->assertTrue($iterator->valid()); $this->assertEquals($iterator->key(), 1); $this->assertEquals($iterator->getIteratorIndex(), 0); $this->assertEquals(get_class($iterator->current()), 'Robots'); $this->assertEquals($robots_first_1->name, $iterator->current()->name); $iterator->next(); $this->assertTrue($iterator->valid()); $this->assertEquals($iterator->key(), 0); $this->assertEquals($iterator->getIteratorIndex(), 1); $this->assertEquals(get_class($iterator->current()), 'Robots'); $this->assertEquals($robots_second_0->name, $iterator->current()->name); $iterator->next(); $this->assertFalse($iterator->valid()); }