> First, the RFC does not say what existing code should migrate to. I often > use > SplFileObject::fputcsv() for generating CSV files. The procedural fputcsv() > is > not affected by this proposal, but it takes a stream resource, so it is not > a drop-in replacement for code that is structured around SplFileObject. > Is there an intended migration path that I have missed? If so, I think it > would > help to have it stated in the RFC, as the other sections in this RFC do. > > Second, SplFileObject::READ_CSV is not part of the proposal, which I think > leaves > the outcome in an inconsistent state. setCsvControl() is the only way to > configure the delimiter, enclosure and escape character used by READ_CSV; > the > constructor does not accept them. If setCsvControl() is removed in PHP 9 > while > READ_CSV remains, READ_CSV is permanently locked to its defaults and > tab-separated files can no longer be read through it. The default value of > $escape is also already deprecated and scheduled to change, so what would > survive > is a flag that cannot be configured and whose defaults are still unsettled. > > Either READ_CSV should be deprecated alongside the four methods, or > setCsvControl() should be retained until a replacement API is available.
Just as a note here - the issues raised by Takuya don't appear to have been responded to from what I can see - the deprecation as it stands would mean that you still have the ability to read files and parse them as CSVs via setting the `READ_CSV` flag in `setFlags`. This outcome does resolve the issue in the linked PR (as following the depreciation period, when the deprecated functions are removed then there are no longer any arguments to set); but it also doesn't achieve Girgias's aim of deprecating and removing the CSV functionality from SPL; and if I am reading the code correctly then when the default for `$escape` on `\fgetcsv` is changed, any code using `READ_CSV` will behave differently on different versions of PHP with no ability to manually make it consistent. I think given the vote has passed, the `READ_CSV` flag also needs to be deprecated. Ideally a similar migration from the deprecated functions would have been provided (as I don't currently see any simple way to pass a `SPLFileInfo` object to `fgetcsv` or similar), but it is too late for that now I suspect.
