当我使用迭代器之后如何关闭资源。
例如 - 如果我有这样的生成器方法:
$fileHandler = fopen($filePath, 'r');
while ($line = fgetcsv($fileHandler)) {
yield $line;
}
fclose($fileHandler);
如何确保调用“fclose”。
如果我调用生成器并且只从 csv 中获取前 3 行,则 while 循环将暂停,如果不调用下一个值,则不会调用“fclose”。
如何确保文件处理程序将被关闭。
最佳答案
将它放在 try
、catch
、finally
block 中。 Finally 总是会被执行。
$fileHandler = fopen($filePath, 'r');
try {
while ($line = fgetcsv($fileHandler)) {
yield $line;
}
} catch(Exception $e) {
//Do something with error.
} finally {
fclose($fileHandler);
}
关于javascript - 如何在生成器函数中关闭 php 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109523/