1--TEST-- 2Phar::buildFromIterator() iterator, 1 file passed in 3--SKIPIF-- 4<?php if (!extension_loaded("phar")) die("skip"); ?> 5--INI-- 6phar.require_hash=0 7phar.readonly=0 8--FILE-- 9<?php 10class myIterator implements Iterator 11{ 12 var $a; 13 function __construct(array $a) 14 { 15 $this->a = $a; 16 } 17 function next() { 18 echo "next\n"; 19 return next($this->a); 20 } 21 function current() { 22 echo "current\n"; 23 return current($this->a); 24 } 25 function key() { 26 echo "key\n"; 27 return key($this->a); 28 } 29 function valid() { 30 echo "valid\n"; 31 return current($this->a); 32 } 33 function rewind() { 34 echo "rewind\n"; 35 return reset($this->a); 36 } 37} 38try { 39 chdir(dirname(__FILE__)); 40 $phar = new Phar(dirname(__FILE__) . '/buildfromiterator4.phar'); 41 var_dump($phar->buildFromIterator(new myIterator( 42 array( 43 'a' => basename(__FILE__, 'php') . 'phpt', 44 // demonstrate that none of these are added 45 '.phar/stub.php' => basename(__FILE__, 'php') . 'phpt', 46 '.phar/alias.txt' => basename(__FILE__, 'php') . 'phpt', 47 '.phar/oops' => basename(__FILE__, 'php') . 'phpt', 48 )))); 49} catch (Exception $e) { 50 var_dump(get_class($e)); 51 echo $e->getMessage() . "\n"; 52} 53?> 54===DONE=== 55--CLEAN-- 56<?php 57unlink(dirname(__FILE__) . '/buildfromiterator4.phar'); 58__HALT_COMPILER(); 59?> 60--EXPECTF-- 61rewind 62valid 63current 64key 65next 66valid 67current 68key 69next 70valid 71current 72key 73next 74valid 75current 76key 77next 78valid 79array(1) { 80 ["a"]=> 81 string(%d) "%sphar_buildfromiterator4.phpt" 82} 83===DONE=== 84