【发布时间】:2023-03-17 07:41:01
【问题描述】:
昨天,我了解到 PHP 有一个yield() 方法。我不确定它在 PHP 中的用处。
一位同事说,它可以帮助 SQL 语句返回许多导致潜在内存问题的行。我相信他指的是fetchAll()。
但是,除了使用fetchAll(),还可以使用fetch() 并逐行处理。所以,yield() 并不是解决他所指问题的关键。
我在这里错过了 yield() 和 fetch() 的一些内容吗?使用yield() 和生成器还有更多好处吗?
P.S.:确实,在大型应用程序中使用yield() 比使用fetch() 更容易编写干净、可读和可维护的代码。
【问题讨论】:
-
好吧,PDO 并不是一个很好的 yield usefilness 示例,因为 PDO 语句已经实现了一个可遍历的接口,并且可以使用 foreach 进行迭代。但是使用 mysqli,您可以使用 yield 使 mysqli 结果与 foreach 一起迭代。
-
嗯,总的来说,这归结为 generators 的用途(因为
yield是 generators 的实现细节)。生成器可用于创建行为类似于数组(或者更确切地说是iterable)的东西,但不会将其所有数据存储在内存中,而是根据需要在每次迭代时生成 .是的,这可以在获取数据库结果的上下文中使用,但也可以用于实现无限计数器或任何数量的其他东西。
标签: php mysqli pdo fetch yield