はじめに
覚え書き。
カウントダウンとか実装するときダラダラ書いちゃうから簡潔に書けるようにした。
$handler = $plugin->getScheduler()->scheduleRepeatingTask(
new ClosureTask(
function() use(&$handler) {
if (/*消したいとき*/) {
$handler->cancel();
}
}
),
1 * 20
);
普通にClosureTask使うときはこんな感じに書くよ
PHP:$handler = $plugin->getScheduler()->scheduleRepeatingTask( new ClosureTask( function() use(&$handler) { if (/*消したいとき*/) { $handler->cancel(); } } ), 1 * 20 );
参照渡し
CancelTaskException
を使うと参照渡しをなくせますね。$handler = $plugin->getScheduler()->scheduleRepeatingTask(
new ClosureTask(
function() {
if (/*消したいとき*/) {
throw new CancelTaskException;
}
}
),
1 * 20
);
おおー!CancelTaskException
を使うと参照渡しをなくせますね。
![]()
PocketMine-MP/CancelTaskException.php at stable · pmmp/PocketMine-MP
A server software for Minecraft: Bedrock Edition in PHP - PocketMine-MP/CancelTaskException.php at stable · pmmp/PocketMine-MPgithub.com
PHP:$handler = $plugin->getScheduler()->scheduleRepeatingTask( new ClosureTask( function() { if (/*消したいとき*/) { throw new CancelTaskException; } } ), 1 * 20 );