抱歉标题听起来有些夸张,只是想知道是否有一种方法可以防止执行所有类型的PHP命令,除了一个。
例如,现在当我使用die()杀死脚本时,我的页面看起来半毁不成,因为页面底部的HTML未能加载,因为它是通过include()函数引入的。
那么有没有办法告诉PHP“不要再执行任何命令,除了include函数”?
你可以使用return
来"终止"一个被包含的文件,而不会结束整个脚本:
test1.php
<?php
include 'test2.php';
echo 'foo';
test2.php
<?php
echo 'bar';
return;
echo 'baz';
输出:
barfoo
您需要使用自定义的die()命令,例如my_die(),以包含所需的文件。您不能覆盖die(),也不会有任何其他函数允许您做您所寻求的事情。
exit()函数将停止执行,并运行任何已注册的退出处理程序。
抛出异常将一直上升到周围try的位置。如果没有try到达顶层,则会终止脚本的所有执行。
在全局范围内使用return将从当前包含文件返回,回到包含/需要文件的内容。
个人建议采用深思熟虑的异常处理方法,并使用try / throw。
你为什么不能直接这样做呢?
if(something didn't work) {
include('footer.php');
die();
}
function finish_and_die($message) {
print $message;
include('footer.php');
exit;
}
if( is_secure($_GET['value']) ) // Whatever you're using to check if the value is allowed
{
// Page content goes here
}
这样,所有其他的包含和页面处理代码仍将被调用。
或者,如果它无效,则抛出异常,并有一个异常处理程序,知道如何完成页面代码。
die()
不是正确的命令。什么是上下文?为什么您需要终止脚本? - Felix Kling