Re: using return in include files
| From: | Chris | Date: | Tue, 23 Jan 2007 04:23:31 +0000 |
| Subject: | Re: using return in include files | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-247598@lists.php.net to get a copy of this message | ||
Aaron Axelsen wrote:
I'm trying to figure out what the desired behavior is of using the return function to bail out of an include page. I did some testing, and this is what I concluded. First, I created the following file: <?php if (defined('TEST_LOADED')) {It's not a bug. When you include a file, the whole file is loaded in to memory. Then php decides (based on your code decisions) about what to do with all of that code. See http://www.php.net/include, specifically: If there are functions defined in the included file, they can be used in the main file independent if they are before return() or after. If the file is included twice, PHP 5 issues fatal error because functions were already declared, while PHP 4 doesn't complain about functions defined after return(). -- Postgresql & php tutorials http://www.designmagick.com/return;} define('TEST_LOADED',true); echo "blah blah blah blah<br/>"; ?> I then called it as follows: include('test.php'); include('test.php'); include('test.php'); The output is: blah blah blah blah Second, I changed the test.php file to be the following: <?php if (defined('TEST_LOADED')) {return;} define('TEST_LOADED',true); echo "blah blah blah blah<br/>"; function myFunc($test) { } ?> When I load the page now, it throws the following error: PHP Fatal error: Cannot redeclare myfunc() It appears that if there are functions in the include page that you can't use return to bail out. What is the desired functionality in this case? Is this a bug in how php handles it? or was return never designed to be used this way?