#25108 [Asn->Opn]: include doesn't return the right value
| From: | derick@php.net | Date: | Sat, 16 Aug 2003 15:45:51 +0000 |
| Subject: | #25108 [Asn->Opn]: include doesn't return the right value | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969355834@lists.php.net to get a copy of this message | ||
ID: 25108
Updated by: derick@php.net
Reported By: mailling at gmx dot co dot uk
-Status: Assigned
+Status: Open
-Bug Type: Scripting Engine problem
+Bug Type: Documentation problem
Operating System: Windows 2000
PHP Version: 4CVS-2003-08-16 (stable)
Assigned To: derick
New Comment:
Hmm, this works for me and it returns the correct result:
int(1)
bool(true)
bool(false)
It's correct because:
if there is no return statement in your include file, an implicit
"return 1;" is added. The second require_once does not include
anything, so the return 1 is never executed, but instead the return
value returns the success of the return_once call. (It was a success
because the file could be included the first time). The include_once()
fails because the file exists, and thus include_once() returns
bool(false).
I think you have a "return;" inside your base.inc.php file (or
something similar like a die()) and thus the first require_once returns
"NULL" (as you're overwriting the default implicit "return 1;".
This should definitely be added to the docs though, as they don't even
talk about return values from include/require functions. (Atleast I
couldn't find it).
Derick
Previous Comments:
------------------------------------------------------------------------
[2003-08-16 10:34:27] derick@php.net
Having a look at this...
------------------------------------------------------------------------
[2003-08-16 09:32:59] mailling at gmx dot co dot uk
Description:
------------
It seems that the variable returned by a correct insert changed from
the last PHP version. Is it a change in the behavior or a bug?
If I include a file and everything is fine, it returns NULL, but it
should return 1 or true (it does true, but the documentation says 1)
Reproduce code:
---------------
// The file base.inc.php exists, base.inc.php2 doesn't
$a = require_once(PROJECT_BASE . '/include/base.inc.php');
$b = require_once(PROJECT_BASE . '/include/base.inc.php');
$c = include_once(PROJECT_BASE . '/include/base.inc.php2');
var_dump($a); // return NULL
var_dump($b); // return true
var_dump($c); // return false
Expected result:
----------------
true (or 1?)
true (or 1?)
false
Actual result:
--------------
NULL
true
false
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=25108&edit=1