PHP Generators Reading a large file with a generator

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Extensions
> Step 2: And Like the video. BONUS: You can also share it!


One common use case for generators is reading a file from disk and iterating over its contents. Below is a class that allows you to iterate over a CSV file. The memory usage for this script is very predictable, and will not fluctuate depending on the size of the CSV file.


class CsvReader
    protected $file;
    public function __construct($filePath) {
        $this->file = fopen($filePath, 'r');
    public function rows()
        while (!feof($this->file)) {
            $row = fgetcsv($this->file, 4096);
            yield $row;
$csv = new CsvReader('/path/to/huge/csv/file.csv');

foreach ($csv->rows() as $row) {
    // Do something with the CSV row.

Got any PHP Question?