在PHP中,如果我使用include()或require()函数开始在另一个脚本中运行代码,有没有办法从子内部终止父脚本?
所以说我在parent.php中有这个:
require('child.php');
这是在child.php中:
exit();
是否会终止child.php或parent.php? 有没有办法从child.php中终止parent.php,而不向parent.php添加任何进一步的代码?
这是PHP中一个精心设计的自定义404错误页面,它检测Apache是否使用ErrorDocument调用它,或者用户是否从我们的自定义CMS请求了一个不存在的页面。如果是后者,那么我想要求我的404.php(子)和输出,而不是继续执行父。
任何人都知道是否可以从包含/必需的脚本中终止父PHP脚本?
答案 0 :(得分:53)
exit();
那会终止child.php,还是parent.php?
它将终止整个脚本。
如果您不想这样做,但返回包含脚本,则可以从包含内return
。
答案 1 :(得分:14)
您正在寻找return
;命令。这将终止只执行child.php,之后将处理parent.php。
答案 2 :(得分:3)
任何人都知道是否有可能 从中终止父PHP脚本 在包含/必需的脚本中?
您可以使用
die();
在任何时候结束任何脚本的执行。使用Die也会结束父脚本。
die("End");
将输出“结束”。
答案 3 :(得分:1)
die
和exit
都会在没有偏见的情况下终止。它是一个无法捕获或撤消的应用程序级别命令。
答案 4 :(得分:1)
实际上exit;
中的child.php
行将终止当前的php流程,这意味着parent.php
将被终止。
答案 5 :(得分:1)
您还可以通过抛出异常并在其中一个父脚本中捕获它来终止脚本。
通过这种方式,您可以通过精确控制哪些脚本终止以及在“include / require”文件堆栈中继续运行的位置。
答案 6 :(得分:0)
使用exit()
将停止脚本执行并终止子项和所有父项。
答案 7 :(得分:0)
您可以尝试抛出异常:
throw new Exception('An Error Ocurred');
答案 8 :(得分:0)
如果需要存在包含的文件但可以从主脚本继续,则可以使用 return 。
返回
(PHP 4,PHP 5,PHP 7)
return 将程序控制返回给调用模块。执行在被调用模块调用之后的表达式处恢复。
如果从函数内部调用,则returnstatement立即结束当前函数的执行,并将其自变量作为函数调用的值返回。 return也将结束eval()语句或脚本文件的执行。
如果从全局范围调用,则当前脚本文件的执行结束。如果当前脚本文件已包含或需要,则控制权将传递回调用文件。此外,如果当前脚本文件已包括在内,则返回的值将作为include调用的值返回。如果从主脚本文件中调用return,则脚本执行结束。如果当前脚本文件由php.ini中的auto_prepend_file或auto_append_fileconfiguration选项命名,则该脚本文件的执行结束