Bug #28845 [Com]: warning on two TRUE expressions while calling include*() in a if-statement
| From: | melbetethiopia659 at gmail dot com | Date: | Mon, 29 Nov 2021 01:46:06 +0000 |
| Subject: | Bug #28845 [Com]: warning on two TRUE expressions while calling include*() in a if-statement | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-238030@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=28845&edit=1
ID: 28845
Comment by: melbetethiopia659 at gmail dot com
Reported by: david dot rech at virusmedia dot de
Summary: warning on two TRUE expressions while calling
include*() in a if-statement
Status: Closed
Type: Bug
Package: *Directory/Filesystem functions
Operating System: Windows XP SP1
PHP Version: 4CVS-2004-06-19 (stable)
Block user comment: N
Private report: N
New Comment:
Melbet is a prominent online sports betting business in Ethiopia and despite the fact that Melbet is
a relatively young company, sports betting enthusiasts have welcomed it because of the
company's various events and high-quality services.
The Melbet betting company has been granted full permission to operate in Ethiopia. Ethiopia is a
thriving sports betting nation, with football being the most popular sport among bettors.
https://playloudershop.com/
Previous Comments:
------------------------------------------------------------------------
[2004-10-06 09:02:44] david dot rech at virusmedia dot de
Somehow fixed in 4.3.9, and I don't have a clue why. This was also reproduced by another
developer.
Did just nobody close the bug or anything? Dunno.
Keep up the good work.
------------------------------------------------------------------------
[2004-06-19 20:04:43] david dot rech at virusmedia dot de
Sorry, missed the closing brace in second if-statement...
Must be:
"Whereas that code, with the first expression in braces, prints "1"
again.
if( (include_once(__FILE__)) && is_integer(1) ) echo 1;"
------------------------------------------------------------------------
[2004-06-19 20:02:25] david dot rech at virusmedia dot de
Description:
------------
I've notice some strange behaviour with include() and include_once() calls in an if-statement
whereas two expressions are TRUE and logically combined with the '&&' operator.
While if( true && true ) echo 1; would print out "1" as expected, this code
however does not:
if( include_once(__FILE__) && is_integer(1) ) echo 1;
Whereas that code, with the first expression in braces, prints "1" again.
if( (include_once(__FILE__) && is_integer(1) ) echo 1;
In the example you should notice that the expression is still TRUE with other functions - even
without braces around first expression.
Also, somehow the result of the second expression gets copied to the first argument of the first
expression as an integer.
Look at this warning:
Warning: main(1): failed to open stream: No such file or directory in [...] on line 12
That's what happens if second expression is true and include_once() was'nt put into
braces. Try to negate the second expression - you will get a '0' referred as the argument
of include_once() in the warning.
So is this some strange magic, or did I've miss the point completely?
Reproduce code:
---------------
<?php
// Expected behaviour
if( true && true ) { // As expected - the expression is TRUE
echo "1st: That may have worked\n";
}
// Weird behaviour
if( class_exists('stdClass') && is_integer(1) ) { // Again - the expression is
TRUE
echo "2nd: You don't see that, don't you?\n";
}
if( @include_once(__FILE__) && is_integer(1) ) { // Expression seems to be FALSE and causes
a weird warning without the @
echo "3rd: So you see this..?";
}
if( (include_once(__FILE__)) && is_integer(1) ) { // TRUE
echo "4rd: In fact, you see this...";
}
?>
Expected result:
----------------
1st: That may have worked
2nd: You don't see that, don't you?
3rd: So you see this..?
4rd: In fact, you see this...
Actual result:
--------------
1st: That may have worked
2nd: You don't see that, don't you?
4rd: In fact, you see this...
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=28845&edit=1