创建但未执行生成器。 延迟加载生成器

I have a following PHP Generator:

<?php

class DatabaseReader
{
    private $database;

    ...

    public function read(int $batchSize): \Generator
    {
        $fromId = 0;

        do {
            $data = $this->database->query("SELECT * FROM Users WHERE id > $fromId LIMIT $batchSize"); // dummy example

            foreach ($data as $row) {
                $fromId = $row['id'];

                yield $row;
            }
        } while ($batchSize === count($data));
    }
}

The thing is, that I need to create Generator, but not to execute any queries to the database yet. Something like lazy read(...) initiation.

An example:

<?php

function printMyData(\Iterator $iterator) {
    foreach ($iterator as $element) { // Execute the first Database query
        var_dump($element);
    }
}

$reader = new DatabaseReader(...);

...

// some logic here.

$iterator = $reader->read(...); // I want to have a Generator object here, but not executed `read(...)`.

...
// some other work here
// at this point, no queries should be executed yet
...

printMyData($iterator);

Any ideas?

Note: that it is a hypothetical scenario. One of the solution to be creating a lazy iterator, which would execute DatabaseReader::read on a very first iteration and proxy all methods to the \Generator created by read(...)