phar_buildfromiterator4.phpt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. Phar::buildFromIterator() iterator, 1 file passed in
  3. --EXTENSIONS--
  4. phar
  5. --INI--
  6. phar.require_hash=0
  7. phar.readonly=0
  8. --FILE--
  9. <?php
  10. class myIterator implements Iterator
  11. {
  12. var $a;
  13. function __construct(array $a)
  14. {
  15. $this->a = $a;
  16. }
  17. function next(): void {
  18. echo "next\n";
  19. next($this->a);
  20. }
  21. function current(): mixed {
  22. echo "current\n";
  23. return current($this->a);
  24. }
  25. function key(): mixed {
  26. echo "key\n";
  27. return key($this->a);
  28. }
  29. function valid(): bool {
  30. echo "valid\n";
  31. return current($this->a);
  32. }
  33. function rewind(): void {
  34. echo "rewind\n";
  35. reset($this->a);
  36. }
  37. }
  38. try {
  39. chdir(__DIR__);
  40. $phar = new Phar(__DIR__ . '/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. --CLEAN--
  55. <?php
  56. unlink(__DIR__ . '/buildfromiterator4.phar');
  57. __HALT_COMPILER();
  58. ?>
  59. --EXPECTF--
  60. rewind
  61. valid
  62. current
  63. key
  64. next
  65. valid
  66. current
  67. key
  68. next
  69. valid
  70. current
  71. key
  72. next
  73. valid
  74. current
  75. key
  76. next
  77. valid
  78. array(1) {
  79. ["a"]=>
  80. string(%d) "%sphar_buildfromiterator4.phpt"
  81. }