Wczoraj dowiedziałem się, że PHP ma metodę yield()
. Nie byłem pewien co do jego przydatności w PHP.Wynik PHP vs pobranie PDO?
Kolega powiedział, że może to pomóc w SQL powracających wiele wierszy powodujących potencjalne problemy z pamięcią. Sądzę, że odnosił się do fetchAll()
. Ale zamiast używać fetchAll()
, można również użyć fetch()
i procesowych wierszy jeden po drugim. Tak więc, yield()
nie jest kluczem do rozwiązania problemu, do którego się odnosi.
jestem brakuje czegoś o yield()
vs fetch()
tutaj? Czy korzystanie z yield()
i generatorów ma więcej zalet?
P.S .: To prawda, że łatwiej jest napisać czysty, czytelny i maitainable kod w dużych aplikacjach yield()
niż zz fetch()
.
No PDO nie jest bardzo dobrym przykładem dla dochodowości usefilness, ponieważ PDO Instrukcja już implementuje interfejs, który można przełączyć i może być iterowany za pomocą foreach. Ale z mysqli możesz użyć yield, aby wynik mysqli był iterowany z foreach. –
Generalnie sprowadza się to do tego, do czego * generatory * są użyteczne (ponieważ 'yield' jest szczegółem implementacji generatorów). Generatory są przydatne do tworzenia czegoś, co zachowuje się jak tablica (lub raczej * iterable *), ale nie przechowuje wszystkich swoich danych w pamięci, ale * generuje * ją z każdą iteracją w razie potrzeby. Tak, może to być używane w kontekście pobierania wyników bazy danych, ale może być również użyte do zaimplementowania nieskończonego licznika lub dowolnej liczby innych rzeczy. – deceze