基底クラス PEARのデストラクタ 2[Pear]
Pear のデストラクタの仕組みがわかったのですが、そのデストラクタの中でもうひとつ仕事がされているようです。
PEARのデストラクタでは、次のように書かれています。
//_PEAR_call_destructors関数の中
// Now call the shutdown functions
if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
call_user_func_array($value[0], $value[1]);
}
}
call_user_func_array関数 で$GLOBALS['_PEAR_shutdown_funcs']に登録された関数をコールして いるようです。なんらか終了時に実行したい関数がある場合、$GLOBALS['_PEAR_shutdown_funcs']に登録すれば実行されそうです。
そのためPEARクラスには、$GLOBALS['_PEAR_shutdown_funcs']に関数を登録するための関数が用意されています。
//終了時に呼ばれる関数を登録
function registerShutdownFunc($func, $args = array())
{
$GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
}
registerShutdownFuncには、call_user_func_arrayと同様にコールバック関数と引数の配列を 渡します。