-1

是否有避免执行“退出”语言结构的简短解决方案?否则我将不得不使用另一个 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 请求调用的,没有返回语句。因为该方法来自外部库,所以我无法修改代码。如果可能的话,我想在一个脚本中调用这个库的两种方法:)

而且......我知道return在做什么,但就我而言,我无法修改代码,因为它不是我的代码 - 它是来自现有软件的代码,我只想在自定义脚本中调用这些现有方法。但是我可以只调用其中一种方法,因为每个方法中都有退出函数,并且多次调用它们会很棒。

4

4 回答 4

3

简单的。exit;从函数中删除。

exit()将终止脚本的执行。您可能希望使用returnwhich 返回到调用代码。

于 2013-10-21T13:22:23.843 回答
2

无法跳过或禁用“退出”命令。

如果你想在脚本停止之前做一些事情,你可以使用关闭函数或对象析构函数......但我不认为这是你想做的事情,是吗?

http://www.php.net/manual/en/function.exit.php

于 2013-10-21T13:23:32.763 回答
1

这一年是 2020 年,可以解决作者现在想要的问题 - 您可以从 PECL(5.0.2 或更高版本)安装uopz 扩展,并使用uopz_allow_exit()函数禁用 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

哦,根据文档,这个扩展应该用于单元测试,而不是生产。再说一次,它没有说不鼓励在生产中使用这个扩展,所以这是你的电话。

于 2020-04-04T20:57:28.593 回答
0

从手册:

终止脚本的执行。

exit(的别名die)是脚本所做的最后一件事。切换到其他用途

function doSomething()
{
   $a = 1+1;
   return true;
}
于 2013-10-21T13:22:34.237 回答