関数の概要
unregister_tick_function は、PHPで事前に登録したタイック関数(tick handler)を解除するための関数です。tick関数とは、PHPの実行中に一定の命令数が実行されるたびに自動的に呼び出される関数のことで、register_tick_functionで登録されたものを管理します。unregister_tick_functionを使うと、特定のtick関数の登録を解除でき、不要になった処理を止めることができます。
パラメータの説明
function_name:解除したいtick関数の名前やコールバックを表す引数。文字列、配列(クラスメソッドの場合)、無名関数などで指定できます。
戻り値
戻り値はありません。tick関数の登録解除を試みますが、登録されていない場合でもエラーは発生しません。
使用例
基本的な使い方
declare(ticks=1);
// 登録したtick関数
function my_tick_function() {
echo "Tickが実行されましたn";
}
// tick関数を登録
register_tick_function('my_tick_function');
$a = 1; // この行でtick関数が呼ばれる(ticks=1のため1命令ごと)
// tick関数の登録を解除
unregister_tick_function('my_tick_function');
$b = 2; // ここではtick関数は呼ばれない
この例では、my_tick_functionをtickとして登録した後、解除することで無効化しています。tick関数が解除された後は、同じくticksが発生しても呼び出されません。
クラスメソッドのtick関数解除
declare(ticks=1);
class MyClass {
public static function staticTick() {
echo "Static tick calledn";
}
public function instanceTick() {
echo "Instance tick calledn";
}
}
register_tick_function(['MyClass', 'staticTick']);
$instance = new MyClass();
register_tick_function([$instance, 'instanceTick']);
$a = 1;
// 静的メソッドの解除
unregister_tick_function(['MyClass', 'staticTick']);
// インスタンスメソッドの解除
unregister_tick_function([$instance, 'instanceTick']);
$b = 2;
クラスの静的メソッドやインスタンスメソッドもtick関数として登録・解除できます。解除時には元の登録形式と同じ形式で指定することがポイントです。
無名関数(クロージャ)のtick関数解除
declare(ticks=1);
$closure = function() {
echo "Anonymous tick functionn";
};
register_tick_function($closure);
$a = 1;
unregister_tick_function($closure);
$b = 2;
無名関数で登録したtick関数の場合は、登録時と同じ変数に格納された無名関数を使って解除します。匿名のまま解除はできないため、必ず変数に保持しておく必要があります。
関連する関数
register_tick_function:tick関数を登録するdeclare:ticksの単位を設定する
まとめ
unregister_tick_functionは、PHPで登録したtick関数を解除して、実行を停止させたい場合に便利な関数です。使い方は登録時と同じ形式のコールバックをパラメータに指定するだけで、戻り値はありません。tick関数は主にコードの実行監視やデバッグなどに使われますが、タイミングを外して登録解除することで不要な処理負荷を減らすことが可能です。PHPでtick処理を制御したい場面において、ぜひ活用してください。
