基底クラス PEARのデストラクタ 2[Pear]

メモ:  Category: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と同様にコールバック関数と引数の配列を 渡します。

bluenote by BBB