我正在为一个新项目编写 PDO 包装器。SQL 的一个非常常见的模式是编写一个语句,例如
while ($row = $connection->fetch($sql)) {
...
}
我的包装函数本质上是这样的:
public function fetch($query, $bindings)
{
$stmt = $this->getPdo()->prepare($query);
$stmt->execute($bindings);
$stmt->setFetchMode($this->getFetchMode());
foreach ($stmt as $record) {
yield $record;
}
}
但是如果我使用while
上面的循环调用它,我就不能使用这些值。做一个var_dump
说那$row
是一个生成器对象。如果我使用 a foreach
, avar_dump
按预期显示数据库数据。是根本不可能使用 遍历生成器while
,还是我在这里把自己弄糊涂了?