- automatic BOM stripping is a plus for usability
- the separation of Statement makes a ton of sense
However, I do worry that some of these changes makes the package harder to use and less intuitive:
- using setHeaderOffset() feels much less obvious than fetchAssoc()
- having to call select() before fetchAll() is not intuitive
- I feel like the relationship between Statement and Reader should be flipped:
Instead of writing:
$statement = (new Statement());
$records = $reader->select($statement);
Would it be more obvious to do the following?
$statement = (new Statement());
$records = $statement->fetch($reader);
To be clear, I feel like the ideas behind v9 are really good but the execution feels a bit rushed. I think for the average user, v9 will feel less intuitive and be harder to work with. A little more thought put into the ergonomics would go a long way to make it clearly better than v8.
Just my $0.02!