어제 저는 PHP가 yield()
방법을 가지고 있음을 알았습니다. 필자는 PHP에서의 유용성에 대해 확신하지 못했습니다.PHP 산출량 대 PDO 가져 오기?
동료는 잠재적 인 메모리 문제를 일으키는 SQL 문이 여러 행을 반환하는 데 도움이 될 수 있다고 말했다. 나는 그가 fetchAll()
을 추천하고 있었다고 생각한다. 그러나 fetchAll()
을 사용하는 대신 fetch()
을 사용하고 행을 하나씩 처리 할 수도 있습니다. 따라서 yield()
은 그가 언급 한 문제를 해결하는 데 중요하지 않습니다.
여기에 yield()
대 fetch()
이 누락 되었나요? yield()
과 발전기를 사용할 때 더 많은 이점이 있습니까?
P.S : 그것이 fetch()
와보다 yield()
큰 애플리케이션에서, 깨끗한 읽고 maitainable 코드를 작성하는 것이 더 쉽습니다 것은 사실이다.
, PDO는 수율 usefilness를위한 아주 좋은 예가 아니다 PDO 때문에 문은 이미 traversable 인터페이스를 구현하고 foreach를 사용하여 반복 할 수 있습니다. 그러나 mysqli를 사용하면 yield를 사용하여 mysqli 결과를 foreach로 반복 할 수있다. –
일반적으로 이것은 발전기 *가 유용하게 사용되는 것으로 나타납니다 (왜냐하면 '수율'은 발전기의 구현 세부 사항이기 때문입니다). 생성자는 배열 (또는 iterable *)처럼 동작하지만 메모리에 모든 데이터를 저장하지 않지만 필요에 따라 각 반복마다 * 생성합니다. 예, 이것은 데이터베이스 결과를 가져 오는 맥락에서 사용될 수 있지만, 무한 카운터 또는 여러 가지 다른 것들을 구현하는 데에도 사용될 수 있습니다. – deceze