ジェネレーター関数が呼び出されると、新しい Generator クラス オブジェクトが内部的に返されます。 Iterator インターフェイスを実装します。イテレータ インターフェイスは、次の抽象メソッドを定義します。
ジェネレーターは 前方専用反復子#として機能します## オブジェクトであり、ジェネレーターへの値の送信やジェネレーターからの値の戻りなど、ジェネレーターの状態を操作するための呼び出し可能なメソッドを提供します。
インタラクターとしてのジェネレーター次の例では、ジェネレーター関数はジェネレーター オブジェクトのファイル内に行を生成します。これらの行は、oreach ループを使用して反復できます。current() や next() などの反復子メソッドも呼び出すことができます。ただし、ジェネレーターは前方専用イテレータであるため、rewind() メソッドを呼び出すと例外がスローされます。
Example<?php function filegenerator($name) { $fileHandle = fopen($name, 'r'); while ($line = fgets($fileHandle)) { yield $line; } fclose($fileHandle); } $name="test.txt"; $file=filegenerator($name); foreach ($file as $line) echo $line; $file->rewind(); echo $file->current(); $file->next(); echo $file->current(); ?>
PHP User Defined Functions PHP Function Arguments PHP Variable Functions PHP Internal (Built-in) Functions PHP Anonymous functions PHP Arrow Functions PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run
以上がPHP ジェネレーターとイテレーター オブジェクトの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。