如果我的脚本被取消了die(),我可以以某种方式检查register_shutdown_function()吗?
像这样的东西:
register_shutdown_function('shutdown');
die('Calling die()');
function shutdown()
{
if (???)
{
// Script was canceled by die()
}
}
Run Code Online (Sandbox Code Playgroud)
注意:在我的网站上,我使用Smarty.所以也许检查,如果$smarty->display()被叫或类似的东西?
有点......但你不一定喜欢它是如何完成的.
由于没有钩子允许你检查是否die被调用,你将不得不以某种方式伪造它.假设您无法触及所有调用die,只留下一个选项:设置一些die默认情况下表示" 已被调用"的状态,并在脚本的最末端删除该状态,当您知道要退出时die早先被称为.
"设置一些状态"听起来像全局变量一样可疑,这应该是最后的手段,所以让我们使用状态的常量:
register_shutdown_function('shutdown');
if (condition) die('Calling die()');
// since we reached this point, die was not called
define('DIE_NOT_CALLED', true);
function shutdown()
{
if (!defined('DIE_NOT_CALLED'))
{
// Script was canceled by die()
}
}
Run Code Online (Sandbox Code Playgroud)