1

新しいプロジェクトの 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ですか、それともここでどこかで自分自身を混乱させましたか?

4

1 に答える 1