Reputation: 11615
in PHP, how would one return from an included script back to the script where it had been included from?
IE:
1 - main script 2 - application 3 - included
Basically, I want to get back from 3 to 2, return() doesn't work.
Code in 2 - application
$page = "User Manager";
if($permission["13"] !=='1'){
include("/home/radonsys/public_html/global/error/permerror.php");
return();
}
Upvotes: 76
Views: 75575
Reputation: 12445
I know that this has already been answered, but I think I have a nice solution...
main.php
function test()
{
$data = 'test';
ob_start();
include dirname( __FILE__ ) . '/included.php';
return ob_get_clean();
}
included.php
<h1>Test Content</h1>
<p>This is the data: <?php echo $data; ?></p>
I just included $data
to show that you can still pass data to the included file, as well as return the included file.
Upvotes: 26
Reputation: 39356
includeme.php:
<?php
return 5;
main.php:
<?php
// ...
$myX = require 'includeme.php';
// ...
also gives the same result
This is one of those little-known features of PHP, but it can be kind of nice for setting up really simple config files.
See the PHP manual, especially Example #5 include and the return statement and its description.
Upvotes: 160
Reputation: 15706
See Example #5 in the documentation for include.
You can get the return value of the script when including it, like:
$foo = include 'script.php';
Upvotes: 5
Reputation: 39138
return
should work, as stated in the documentation.
If the current script file was include()ed or require()ed, then control is passed back to the calling file. Furthermore, if the current script file was include()ed, then the value given to return() will be returned as the value of the include() call.
Upvotes: 27
Reputation: 48546
Hm, the PHP manual disagrees with you. return
should bail you out of an included file. It won't work from within a function, of course.
Upvotes: 5