在我的函数中有许多退出点,我想在输入时锁定表,但是在退出此函数时自动解锁所有表,无论是异常,返回等。
在C ++中,我将在类构造函数中创建锁定表并在析构函数中解锁表,并简单地在堆栈上的函数入口上创建类,该函数将在函数出口处自动展开(破坏)。
所以在C ++中:
struct locktables{
locktables()
{
//lock them all
}
~locktables()
{
//unlock them all
}
};
void process_function()
{
locktables _l_dddsdsdsa;
//logic goes here
}
我知道这些类是作为引用而不是在堆栈中创建的。
如何在PHP中执行此操作?
答案 0 :(得分:1)
为什么不封装函数调用?
function doFooWithLock()
{
lock();
try
{
$return = doFoo();
}
catch(Exception $e)
{
// no idea for what you need to catch.
unlock();
throw $e; # re-throw
}
unlock();
return $return;
}
function doFoo()
{
//...
}