昨日、私はPHPにyield()
メソッドがあることを学びました。私はPHPでのその有用性については不安でした。PHP収量対PDO取得?
同僚は、それが潜在的なメモリの問題を引き起こし、多くの行を返すSQL文のために役立つかもしれないと述べました。彼はfetchAll()
を参照していたと思います。 しかし、fetchAll()
を使用する代わりに、fetch()
を使用して、行を1つずつ処理することもできます。だから、yield()
は、彼が指摘している問題を解決する鍵ではありません。
は、私がここにfetch()
対についてyield()
何かが足りないのですか? yield()
とジェネレータを使用すると、より多くの利点がありますか?
P.S:それはfetch()
とよりもyield()
を持つ大規模なアプリケーションでは、クリーン読めるとmaitainableコードを記述する方が簡単です事実です。
、PDOは、降伏usefilnessのための非常に良い例ではないPDO理由文はすでにトラバース可能なインタフェースを実装しており、foreachを使用して反復することができます。しかし、mysqliを使うと、yieldを使ってmysqliの結果をforeachで繰り返すことができます。 –
まあ、一般的に、これは*ジェネレータ*が役に立つものになります( 'yield 'はジェネレータの実装の詳細なので)。そしてジェネレータは、配列(または* iterable *)のように動作するが、すべてのデータをメモリに格納せず、必要に応じて各繰り返しで*生成するものを作成するのに便利です。はい、これはデータベース結果を取得するコンテキストで使用できますが、無限カウンターや他の多くのものを実装するために使用することもできます。 – deceze