昨天,我瞭解到PHP有一個yield()
方法。我不確定它在PHP中的用處。PHP收益與PDO獲取?
一位同事表示,它可以幫助SQL語句返回許多行,從而導致潛在的內存問題。我相信他是指fetchAll()
。 但是,不是使用fetchAll()
,也可以使用fetch()
並逐行處理行。所以,yield()
對於解決他所指的問題並不是關鍵。
我是否錯過yield()
vs fetch()
?使用yield()
和發電機有更多好處嗎?
P.S:這是真的,這是比較容易寫在yield()
大型應用程序乾淨,可讀性和maitainable代碼要比用fetch()
。
嘛,PDO不是產量usefilness一個很好的例子,因爲PDO語句已經實現了一個可遍歷的接口,並且可以使用foreach進行迭代。但是使用mysqli你可以使用yield來使foreq的mysqli結果迭代。 –
那麼,一般來說,這取決於*發生器*的用途(因爲yield是發生器的實現細節)。生成器對於創建行爲類似於數組(或者說是一個* iterable *)的東西很有用,但它不會將其所有數據存儲在內存中,而是根據需要每次迭代生成*它。是的,這可以在獲取數據庫結果的上下文中使用,但也可以用來實現無限計數器或任何其他事物。 – deceze