FileSystemWatcher::getIterator

(PHP 8.6+, True Async 1.0)

public FileSystemWatcher::getIterator(): Iterator

返回用于 foreach 的迭代器。使用 foreach ($watcher as $event) 时会自动调用。

迭代器产生 Async\FileSystemEvent 对象。当缓冲区为空时,协程将挂起直到新事件到达。当监视器关闭且缓冲区耗尽时,迭代结束。

参数

无参数。

返回值

Iterator — 产生 Async\FileSystemEvent 对象的迭代器。

错误/异常

示例

示例 #1 使用 foreach 的标准用法

<?php
use Async\FileSystemWatcher;
use function Async\spawn;
use function Async\delay;

spawn(function() {
    $watcher = new FileSystemWatcher('/tmp/dir');

    spawn(function() use ($watcher) {
        delay(5000);
        $watcher->close();
    });

    foreach ($watcher as $event) {
        echo "Event: {$event->filename}";
        echo " renamed={$event->renamed}";
        echo " changed={$event->changed}\n";
    }

    echo "Iteration completed\n";
});
?>

示例 #2 使用 break 中断

<?php
use Async\FileSystemWatcher;

$watcher = new FileSystemWatcher('/tmp/dir');

foreach ($watcher as $event) {
    if ($event->filename === 'stop.flag') {
        break;
    }
    processEvent($event);
}

$watcher->close();
?>

参见