是否有一个简短的解决方案来避免执行"退出"语言构造?否则,我将不得不用另一个PHP请求执行我的函数。
示例:main.php
echo 'hello world';
doSomething();
updateSomething();
示例:doSomething.php
function doSomething()
{
$a = 1+1;
exit;
}
示例:updateSomething.php
function updateSomething()
{
$b = 3+5;
exit;
}
但第二个功能永远不会被执行......有一个简单的解决方案吗?我找到了两个现有的主题,没有真正的解决方案。但也许我的例子有聪明的伎俩?
它不是一个真实的例子,在我的例子中,函数代表了一些复杂的方法,这些方法是用ajax reqests调用的,没有return语句。因为该方法来自外部库,所以我无法修改代码。如果可能的话,我想在一个脚本中调用这个库的两个方法:)
并且......我知道return
正在做什么,但在我的情况下,我无法修改代码,因为它不是我的代码 - 它来自的代码现有的软件,我只想在自定义脚本中调用这些现有的方法。但是我可以调用其中一种方法,因为每种方法都有exit函数,所以多次调用它们会很棒。
答案 0 :(得分:3)
答案 1 :(得分:2)
无法跳过或禁用“退出”命令。
如果你想在脚本停止之前做一些事情,你可以使用shutdown-functions或object-destructors ......但我认为你不应该这样做,是吗?
答案 2 :(得分:0)
从手册:
终止脚本的执行。
exit
(die
的别名)是脚本的最后一件事。切换到另一种用途
function doSomething()
{
$a = 1+1;
return true;
}
答案 3 :(得分:0)
现在是2020年,是一种解决作者希望存在的问题的方法-您可以从PECL(版本5.0.2或更高版本)安装uopz extension,然后使用uopz_allow_exit()功能禁用退出(),例如:
echo 'hello world';
uopz_allow_exit( false );
doSomething();
updateSomething();
uopz_allow_exit( true );
但是请注意,您需要将此配置选项添加到php.ini文件中:
uopz.exit = 1
如果不这样做,默认情况下, 所有exit()调用将在所有地方默认禁用 ,除非已通过uopz_allow_exit()明确启用。
还值得注意的是,此配置选项仅出现在6.0.1版中,至少对我来说,该版本无法在PHP 7.0上安装,而仅在7.2版上可用
哦,根据文档,此扩展名应该用于单元测试,而不是生产。再说一次,它中没有任何内容表明不鼓励在生产中使用此扩展,因此这是您的要求。