【PHP8.x】isTerminatedメソッドの使い方

isTerminatedメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

isTerminatedメソッドは、PHPのFiberクラスに属し、特定のFiberインスタンスがその実行を完全に終了したかどうかを確認するメソッドです。PHP 8.1で導入されたFiberは、プログラムの実行を一時的に中断し、必要に応じて再開できる軽量な並行処理の仕組み(コルーチン)を提供します。これにより、非同期処理などをより柔軟かつ直感的に記述できるようになります。

このisTerminatedメソッドは、呼び出されたFiberが既にその役割を終え、これ以上実行されることがない状態にあるかどうかを判定します。具体的には、Fiberの処理が最後まで正常に実行された場合や、実行中に補足されなかった例外が発生して終了した場合にtrueを返します。Fiberがまだ実行中であるか、またはFiber::suspend()によって一時的に中断されている状態の場合にはfalseを返します。

isTerminatedtrueを返すFiberは、もはや再開することはできません。この点は、一時的な中断状態を示すFiber::isSuspended()とは異なります。isSuspended()はFiberが再開可能であることを意味しますが、isTerminated()はFiberがそのライフサイクルを終え、最終的な状態に達したことを示します。

このメソッドを使用することで、複数のFiberを協調させて動作させる場合に、どのFiberがすでに処理を終えたのかを正確に把握し、その後のプログラムのフローを適切に制御することができます。例えば、並行して実行されているタスク群の中で、特定のタスクが完了したことを確認してから次のステップへ進むようなシナリオで非常に有用です。

構文(syntax)

1<?php
2(new Fiber(fn() => null))->isTerminated();

引数(parameters)

引数なし

引数はありません

戻り値(return)

bool

Fiber::isTerminated メソッドは、Fiber が終了しているかどうかを示す真偽値(bool)を返します。true であれば終了しており、false であれば実行中または中断状態であることを示します。

【PHP8.x】isTerminatedメソッドの使い方 | いっしー@Webエンジニア