2011-05-26 42 views
17

我包括文件inner.phpouter.php,我有一个条件inner.php我想停止执行inner.php但不是整个脚本,即我想跳转到在包含inner.php之后的第一行outer.php中,我不想将所有inner.php中的代码包含在if语句中。跳过PHP(其中包含的)文件的其余部分

有没有办法做到这一点,否则呢?

回答

26

只要在inner.php文件的顶层执行return;return($value);即可。

如果从全局范围调用,然后 当前脚本文件 的执行结束。如果当前脚本文件 是include()edrequire()ed,则将 控件传回给调用的 文件。此外,如果当前的 脚本文件是include()ed,那么给予return()的 值将为 ,作为include() 调用的值返回。

+1

摘取说明的彻底性,具体回答*我的问题 – MeLight 2011-05-26 10:39:01

+0

太棒了!谢谢:-)回报真的帮了我 – Can 2015-05-21 05:07:35

+0

+1,我从来没有意识到'require'或'include'可以有返回值。使用退货,我可以检查自动包含提供有效的类更好一点:D – 2015-08-25 09:38:29

9

您可以在您的包含文件中调用return,但是如果您必须这样做,那么它表明您的架构有问题。例如,考虑这个包含文件:

<?php 
// include.php 
echo "This is my include"; 
return; 
echo "This is after the include"; 

..included下页:

<?php 
// index.php 
include('include.php'); 

你会得到的输出是:This is my include

+0

我推荐使用require来停止你的页面执行,如果找不到include文件。我也同意,如果你想要这样做,你的架构可能有些问题。分割您的包含文件或在包含文件中进行条件测试。 – 3nixios 2011-05-26 09:24:02

2

如何有两个文件的内部。第一部分和第二部分将条件放在第二部分?

2

扔在那里要停止

// in inner.php: 
// ...some code... 

throw new Exception('Error description'); 

// ...some code which will not always execute... 

,并抓住它在文件中要恢复

// in outer.php 
try { 
    include 'inner.php'; 
} catch (Exception $e) { 
    //TODO: add error handling here 
} 

UPDATE

不同点异常使用return;作为其他答案在这里建议,使用例外将打破在哪里,即使你在某个函数内inner.php

相关问题