1--TEST-- 2Test feof() function : basic functionality 3--CREDITS-- 4Dave Kelsey <d_kelsey@uk.ibm.com> 5--FILE-- 6<?php 7/* Prototype : proto bool feof(resource fp) 8 * Description: Test for end-of-file on a file pointer 9 * Source code: ext/standard/file.c 10 * Alias to functions: gzeof 11 */ 12 13echo "*** Testing feof() : basic functionality ***\n"; 14$tmpFile1 = __FILE__.".tmp1"; 15$h = fopen($tmpFile1, 'wb'); 16$count = 10; 17for ($i = 1; $i <= $count; $i++) { 18 fwrite($h, "some data $i\n"); 19} 20fclose($h); 21 22echo "\n*** testing reading complete file using feof to stop ***\n"; 23$h = fopen($tmpFile1, 'rb'); 24 25//feof is not set to true until you try to read past the end of file. 26//so fgets will be called even if we are at the end of the file on 27//last time to set the eof flag but it will fail to read. 28$lastline = ""; 29while (!feof($h)) { 30 $previousLine = $lastline; 31 $lastline = fgets($h); 32} 33echo $previousLine; 34var_dump($lastline); // this should be false 35fclose($h); 36 37$tmpFile2 = __FILE__.".tmp2"; 38$h = fopen($tmpFile2, 'wb+'); 39$count = 10; 40echo "*** writing $count lines, testing feof ***\n"; 41for ($i = 1; $i <=$count; $i++) { 42 fwrite($h, "some data $i\n"); 43 var_dump(feof($h)); 44} 45 46echo "*** testing feof on unclosed file after a read ***\n"; 47 48fread($h, 100); 49var_dump(feof($h)); 50 51$eofPointer = ftell($h); 52 53echo "*** testing feof after a seek to near the beginning ***\n"; 54fseek($h, 20, SEEK_SET); 55var_dump(feof($h)); 56 57echo "*** testing feof after a seek to end ***\n"; 58fseek($h, $eofPointer, SEEK_SET); 59var_dump(feof($h)); 60 61echo "*** testing feof after a seek passed the end ***\n"; 62fseek($h, $eofPointer + 1000, SEEK_SET); 63var_dump(feof($h)); 64 65echo "*** closing file, testing eof ***\n"; 66fclose($h); 67feof($h); 68unlink($tmpFile1); 69unlink($tmpFile2); 70 71echo "Done"; 72?> 73--EXPECTF-- 74*** Testing feof() : basic functionality *** 75 76*** testing reading complete file using feof to stop *** 77some data 10 78bool(false) 79*** writing 10 lines, testing feof *** 80bool(false) 81bool(false) 82bool(false) 83bool(false) 84bool(false) 85bool(false) 86bool(false) 87bool(false) 88bool(false) 89bool(false) 90*** testing feof on unclosed file after a read *** 91bool(true) 92*** testing feof after a seek to near the beginning *** 93bool(false) 94*** testing feof after a seek to end *** 95bool(false) 96*** testing feof after a seek passed the end *** 97bool(false) 98*** closing file, testing eof *** 99 100Warning: feof(): %d is not a valid stream resource in %s on line %d 101Done 102