FileSystemWatcher::getIterator
(PHP 8.6+, True Async 1.0)
public FileSystemWatcher::getIterator(): Iterator
Возвращает итератор для использования в foreach. Вызывается автоматически при foreach ($watcher as $event).
Итератор выдаёт объекты Async\FileSystemEvent. Когда буфер пуст — корутина приостанавливается до поступления нового события. Итерация завершается, когда наблюдатель закрыт и буфер опустошён.
Параметры
Нет параметров.
Возвращаемое значение
Iterator — итератор, выдающий объекты Async\FileSystemEvent.
Ошибки/Исключения
Error— если итератор используется вне корутины.
Примеры
Пример #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->filename}";
echo " renamed={$event->renamed}";
echo " changed={$event->changed}\n";
}
echo "Итерация завершена\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();
?>
См. также
- FileSystemWatcher — Обзор концепции
- FileSystemWatcher::close — Остановить наблюдение