ID: 22883
Updated by: [EMAIL PROTECTED]
Reported By: stephen at mu dot com dot au
-Status: Open
+Status: Wont fix
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 4.3.0
New Comment:
Your summary is not 100% correct.
feof(NULL) will actually do two things:
1) It will generate an E_WARNING condition stating that the supplied
argument is not a valid stream resource.
2) It will return NULL, not FALSE
This means two things:
1) replacing: (!feof($fp)) with a sctrict check of (feof($fp) ===
false) will be enough to 'fix' your example script.
2) Good coding practices dictate that one should examine the contents
of a variable before using it.
$fp = fopen($filename);
if ($fp) {
while (!feof($fp)) fread($fp, 1024);
} else {
echo 'Unable to open file.';
}
Either way, there is no reason to modify this function with a piece of
bloat which performs an otherwise unnecessary operation.
Previous Comments:
------------------------------------------------------------------------
[2003-03-25 17:32:51] stephen at mu dot com dot au
Short code snippet -
$fp = fopen($filename);
while (!feof($fp)) fread($fp, 1024);
Summary -
fopen() requires 2 arguments, not 1 so it returns NULL (this is correct
behavior).
feof($fp) when $fp = NULL returns false. So when using !feof($fp) as a
loop condition, we get an infinite loop (and 2 error messages per
iteration around the loop).
I suggest that the foef() function be modified to return that foef($fp)
is true, not false, when reporting an error with the file handle
resource. This is on the basis that foef($fp) returning false is a
condition for the program to continue reading from $fp (i.e. the file
pointer contains more data - has not reached the end of file).
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22883&edit=1