新しいプロジェクトの 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しかし、上記のようにループを使用してこれを呼び出すと、値を使用できません。a を実行するvar_dumpと、それ$rowは Generator オブジェクトです。を使用するforeachと、var_dump予想どおり、データベースのデータが表示されます。を使用してジェネレーターをトラバースすることは単に不可能whileですか、それともここでどこかで自分自身を混乱させましたか?