Parce que c'est ainsi que l'API est conçue, dans un souci de flexibilité.
Votre objet ne contient pas tous les jeux de données. Au lieu de cela PDOStatement
implémente le Iterator
/Traversable
interface, appelant implicitement ->fetch pour chaque foreach opération.
Certaines personnes préfèrent cependant utiliser ->fetch manuellement, ou ->fetchAll pour tirer toutes les rangées à la fois.