phar_oo_008.phpt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. --TEST--
  2. Phar object: iterating via SplFileObject
  3. --EXTENSIONS--
  4. phar
  5. --INI--
  6. phar.require_hash=0
  7. --FILE--
  8. <?php
  9. $pharconfig = 1;
  10. require_once 'files/phar_oo_test.inc';
  11. $phar = new Phar($fname);
  12. $phar->setInfoClass('SplFileObject');
  13. $f = $phar['a.csv'];
  14. echo "===1===\n";
  15. foreach($f as $k => $v)
  16. {
  17. echo "$k=>$v\n";
  18. }
  19. $f->setFlags(SplFileObject::DROP_NEW_LINE);
  20. echo "===2===\n";
  21. foreach($f as $k => $v)
  22. {
  23. echo "$k=>$v\n";
  24. }
  25. class MyCSVFile extends SplFileObject
  26. {
  27. function current(): array|false
  28. {
  29. return parent::fgetcsv(',', '"');
  30. }
  31. }
  32. $phar->setInfoClass('MyCSVFile');
  33. /** @var MyCSVFile $v */
  34. $v = $phar['a.csv'];
  35. echo "===3===\n";
  36. while(!$v->eof())
  37. {
  38. echo $v->key() . "=>" . join('|', $v->fgetcsv()) . "\n";
  39. }
  40. echo "===4===\n";
  41. $v->rewind();
  42. while(!$v->eof())
  43. {
  44. $l = $v->fgetcsv();
  45. echo $v->key() . "=>" . join('|', $l) . "\n";
  46. }
  47. echo "===5===\n";
  48. foreach($v as $k => $d)
  49. {
  50. echo "$k=>" . join('|', $d) . "\n";
  51. }
  52. class MyCSVFile2 extends SplFileObject
  53. {
  54. function getCurrentLine(): string
  55. {
  56. echo __METHOD__ . "\n";
  57. return implode('|', parent::fgetcsv(',', '"'));
  58. }
  59. }
  60. $phar->setInfoClass('MyCSVFile2');
  61. /** @var MyCSVFile2 $v */
  62. $v = $phar['a.csv'];
  63. echo "===6===\n";
  64. foreach($v as $k => $d)
  65. {
  66. echo "$k=>" . $d . "\n";
  67. }
  68. ?>
  69. --CLEAN--
  70. <?php
  71. unlink(__DIR__ . '/files/phar_oo_008.phar.php');
  72. __halt_compiler();
  73. ?>
  74. --EXPECT--
  75. ===1===
  76. 0=>1,2,3
  77. 1=>2,a,b
  78. 2=>3,"c","'e'"
  79. ===2===
  80. 0=>1,2,3
  81. 1=>2,a,b
  82. 2=>3,"c","'e'"
  83. ===3===
  84. 0=>1|2|3
  85. 0=>2|a|b
  86. 1=>3|c|'e'
  87. ===4===
  88. 0=>1|2|3
  89. 1=>2|a|b
  90. 2=>3|c|'e'
  91. ===5===
  92. 0=>1|2|3
  93. 1=>2|a|b
  94. 2=>3|c|'e'
  95. ===6===
  96. MyCSVFile2::getCurrentLine
  97. 1=>1|2|3
  98. MyCSVFile2::getCurrentLine
  99. 3=>2|a|b
  100. MyCSVFile2::getCurrentLine
  101. 5=>3|c|'e'