function key()
 {
     return ($this->getIteratorIndex() ? '@' : '') . parent::key();
 }
Exemple #2
0
 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;
 }
Exemple #5
0
[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());
 }