當呼叫生成器函數時,內部會傳回一個新的 Generator 類別物件。它實作了迭代器介面。迭代器介面定義了以下抽象方法
僅前向迭代器對象,並提供可呼叫的方法來操縱生成器的狀態,包括向生成器發送值和從生成器返回值。
生成器作為交互器在下面的範例中,生成器函數在生成器物件的檔案中產生行,可以使用 oreach 循環遍歷這些行。也可以呼叫諸如current() 和 next() 之類的迭代器方法。但是,由於生成器是只向前迭代器,因此呼叫rewind() 方法會拋出異常
範例<?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中文網其他相關文章!