Bug #68466 [Opn]: Iterating SplFileObject shows empty line at end of file

From: Date: Sat, 22 Nov 2014 23:53:21 +0000
Subject: Bug #68466 [Opn]: Iterating SplFileObject shows empty line at end of file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-188748@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=68466&edit=1 ID: 68466 User updated by: tim_siebels_aurich at yahoo dot de Reported by: tim_siebels_aurich at yahoo dot de Summary: Iterating SplFileObject shows empty line at end of file Status: Open Type: Bug Package: SPL related PHP Version: 5.6.3 Block user comment: N Private report: N New Comment: It sure does. But it is different from the fopen variation. Take a second look at expected/actual. I expect to have false at the end, because if you use fopen() you get false at the end. Either of those should be changed. Previous Comments: ------------------------------------------------------------------------ [2014-11-22 23:38:46] fmargaine@php.net I can't actually reproduce having bool(false) at the end. On a clean build (5.5/5.6), SplFileObject iterates correctly. ------------------------------------------------------------------------ [2014-11-22 22:44:54] fmargaine@php.net Hi, This is the equivalent you're looking for: <?php $o = new SplFileObject(__FILE__); while (!$o->eof()) { var_dump($o->fgets()); } ?> However, it *is* weird that the iterator doesn't stop at the end of file. ------------------------------------------------------------------------ [2014-11-20 20:48:44] tim_siebels_aurich at yahoo dot de Description: ------------ Iterating over a SplFileObject differs from using fopen() and friends. SplFileObject is supposed to be an object oriented interface for the file handling functions. Their output shouldn't be different. Test script: --------------- <?php $o = new SplFileObject(__FILE__); foreach($o as $key=>$val) { var_dump($val); } /* Should be the same as $h = fopen(__FILE__, 'r'); while(!feof($h)) { var_dump(fgets($h)); } */ Expected result: ---------------- string(3) "<? " string(34) "$o = new SplFileObject(__FILE__); " string(1) " " string(28) "foreach($o as $key=>$val) { " string(18) " var_dump($val); " string(2) "} " bool(false) Actual result: -------------- <?php $o = new SplFileObject(__FILE__); foreach($o as $key=>$val) { var_dump($val); } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=68466&edit=1

« previous php.bugs (#188748) next »