31 KiB
Changelog
All Notable changes to Csv will be documented in this file
9.7.4 - 2021-11-30
Added
- None
Deprecated
- None
Fixed
- Bug fix
EscapeFormulato follow OWASP latest recommendation PR #452
thanks to @robertfausk and @Lehmub
Removed
- None
9.7.3 - 2021-11-21
Added
- None
Deprecated
- None
Fixed
- Update PHPStan requirement for development
- Improve Documentation generation thanks to pdelre
- PHP8.1 compliance: using
ReturnTypeWillChangeto avoid emitting a unnecessary deprecation notice. thanks to cedric-anne
Removed
- None
9.7.2 - 2021-10-05
Added
- None
Deprecated
- None
Fixed
- Update dependencies requirement for development
- PHP8.1 compliance: replace
FILTER_SANITIZE_STRINGbyFILTER_UNSAFE_RAW - PHP8.1 compliance: remove duplicated public properties declaration
- PHP8.1 compliance: add support for fputcsv
$eolargument
Removed
- None
9.7.1 - 2021-04-17
Added
- None
Deprecated
- None
Fixed
- fix writer filter #421 by LosingBattle
Removed
- None
9.7.0 - 2021-03-26
Added
League\Csv\SyntaxError::duplicateColumnNamesto expose column name duplicates during header usageLeague\Csv\UnableToProcessCsvas the new Exception Marker InterfaceLeague\Csv\UnavailableStreamas the new ExceptionLeague\Csv\Info::getDelimiterStatsto replace the namespace functiondelimiter_detectLeague\Csv\Info::fetchBOMSequenceto replace the namespace functionbom_matchLeague\Csv\AbstractCsv::toStringto replaceLeague\Csv\AbstractCsv::getContentandLeague\Csv\AbstractCsv::__toStringLeague\Csv\XMLConverter::createto replaceLeague\Csv\XMLConverter::__constructLeague\Csv\HTMLConverter::createto replaceLeague\Csv\HTMLConverter::__constructLeague\Csv\AbstractCsv::supportsStreamFilterOnReadandLeague\Csv\AbstractCsv::supportsStreamFilterOnWriteto replaceLeague\Csv\AbstractCsv::supportsStreamFilterandLeague\Csv\AbstractCsv::getStreamFilterMode
Deprecated
League\Csv\delimiter_detectuseLeague\Csv\Info::getDelimiterStatsLeague\Csv\bom_matchuseLeague\Csv\Info::fetchBOMSequenceLeague\Csv\AbstractCsv::getContentuseLeague\Csv\AbstractCsv::toStringLeague\Csv\AbstractCsv::getStreamFilterModeuseLeague\Csv\AbstractCsv::supportsStreamFilterOnReadorLeague\Csv\AbstractCsv::supportsStreamFilterOnWriteLeague\Csv\AbstractCsv::supportsStreamFilteruseLeague\Csv\AbstractCsv::supportsStreamFilterOnReadorLeague\Csv\AbstractCsv::supportsStreamFilterOnWrite- Calling exceptions constructor, use named constructors instead.
League\Csv\XMLConverter::__constructuseLeague\Csv\XMLConverter::createLeague\Csv\HTMLConverter::__constructuseLeague\Csv\HTMLConverter::create
Fixed
- Move tests into the
srcdirectory - Fixed encoder method resolver implementation
- all classes marked as
@internalare now final League\Csv\AbstractCsv::STREAM_FILTER_MODEconstant replacesLeague\Csv\AbstractCsv::$stream_filter_mode
Removed
- PHP7.2 support
League\Csv\AbstractCsv::$stream_filter_mode
9.6.2 - 2020-12-10
Added
- Using Github actions as development tools.
Deprecated
- None
Fixed
Removed
- Removing Travis and Scrutinizr as development tools
9.6.1 - 2020-09-05
Added
- None
Deprecated
- None
Fixed
- BOM sequence processing fix #394
Removed
- None
9.6.0 - 2020-03-17
Added
- More return types and type parameters as supported in PHP7.2+
League\Csv\Statement::createnamed constructor to ease constraint builder instantiationLeague\Csv\Statementcan now also processLeague\Csv\ResultSetinstances.League\Csv\TabularDataReaderinterface to represent how to read tabular dataLeague\Csv\ResultSet::getRecordshas an optional$headersecond argument to make the method works likeLeague\Csv\Reader::getRecordsLeague\Csv\ResultSet::createFromTabularDataReadercreate a new instance fromLeague\Csv\TabularDataReaderimplementing class.
Deprecated
- Nothing
Fixed
League\Csv\Readerno longer uses__callto implementfetchOne,fetchPairsandfetchColumnmethods.
Removed
- Internal polyfill for
is_iterable - Internal polyfill for
is_nullable_int - Support for PHP7.0 and PHP7.1
9.5.0 - 2019-12-15
Added
- Improve package exception throwing by adding new exceptions classes that extends
the
League\Csv\Exceptionexception marker class #360, #361 feature proposed and developed by Darren MillerLeague\Csv\UnavailableFeatureLeague\Csv\InvalidArgumentLeague\Csv\SyntaxError
Deprecated
- Nothing
Fixed
- bug fix
bom_matchfunction see issue #363 resolved based on PR from Jerry Martinez - bug fix
delemiter_detectfunction see issue #366
Removed
- Nothing
9.4.1 - 2019-10-17
Added
- Nothing
Deprecated
- Nothing
Fixed
Removed
- Nothing
9.4.0 - 2019-10-02
Added
-
Adding support for controlling empty record presence in
Reader::getRecordsreturn value.Reader::includeEmptyRecordsReader::skipEmptyRecordsReader::isEmptyRecordsIncluded
-
Adding support for controlling Input BOM usage in the library:
AbstractCsv::skipInputBOMAbstractCsv::includeInputBOMAbstractCsv::isInputBOMIncluded
Deprecated
- Nothing
Fixed
EmptyEscapeParser::parseno longer auto skip empty records
Removed
- Nothing
9.3.0 - 2019-07-30
Added
XMLConverter::importsee #348 thanks @kusabi- Support for
thead,tfootandtbodyinHTMLConverter::convertvia the addition of protected methodsHTMLConverter::addHTMLAttributesandHTMLConverter::appendHeaderSection#348 thanks @kusabi
Deprecated
- Nothing
Fixed
- Internal improvement in
Readerdockblock thanks @ghobaty. - Improve strict comparison when using
preg_match. - Improve CSV control in
Stream.
Removed
- Nothing
9.2.1 - 2019-06-08
Added
- Nothing
Deprecated
- Nothing
Fixed
AbstractCSV::chunksee #325 remove CSV flags from the Stream class to avoid infinite loop.- Internal improve
HTMLConverter.
Removed
- Nothing
9.2.0 - 2019-03-08
Added
- Supports for PHP7.4 empty string for the escape character
- Supports for empty string for the escape character with a polyfill for PHP7.4- versions.
AbstractCSV::getPathnamesee #321 thanks @tomkyle
Deprecated
League\Csv\RFC4180FielduseAbstractCSV::setEscapemethod with an empty string instead.
Fixed
-
AbstractCSV::__constructcorrectly initializes properties -
AbstractCSV::createFromStringnamed constructor default argument is now the empty string -
AbstractCSV::setEscapenow accepts the empty string likefputcsvandfgetcsv -
Writer::insertOnefixes throwing exception when record can not be inserted -
XMLConverterconvert to string the record value to avoid PHP warning onnullvalue -
Internal
Stream::createFromStringnamed constructor default argument is now the empty string -
Internal
Stream::fwriteimproved -
Internal
Stream::__destructno longer emit warning on invalid stream filter removal. -
Internal
Stream::seekreturns0if the seeked position0is valid see #321 thanks @HaozhouChen -
Reader:getHeaderwhen the record is an empty line.
Removed
- Nothing
9.1.4 - 2018-05-01
Added
- Nothing
Deprecated
- Nothing
Fixed
Writer::setFlushThresholdshould accept 1 as an argument #289CharsetConverter::convertshould not try to convert numeric value #287
Removed
- Nothing
9.1.3 - 2018-03-12
Added
- Nothing
Deprecated
- Nothing
Fixed
Writer::insertOneallow empty array to be added to the CSV (allow inserting empty row)- Removed all return type from named constructor see #285
- Added PHPStan for static code analysis
Removed
- Nothing
9.1.2 - 2018-02-05
Added
- Nothing
Deprecated
- Nothing
Fixed
is_iterablepolyfill for PHP7.0Reader::getHeaderno longer throws exception because of a bug in PHP7.2+ issue #279
Removed
- Nothing
9.1.1 - 2017-11-28
Added
- Nothing
Deprecated
- Nothing
Fixed
-
issue with
error_get_lastusage when using a modified PHP error handler see #254 - fixed by @csiszarattila -
Removed seekable word from Stream exception messages.
Removed
- Nothing
9.1.0 - 2017-10-20
Added
- Support for non seekable stream. When seekable feature are required an exceptions will be thrown.
League\Csv\EncloseFieldto force enclosure insertion on every field. #269League\Csv\EscapeFormulaa League CSV formatter to prevent CSV Formula Injection in Spreadsheet programs.League\Csv\RFC4180Field::addToaccept an option$replace_whitespaceargument to improve RFC4180 compliance.League\Csv\Abstract::getContentto replaceLeague\Csv\Abstract::__toString. The__toStringmethod may trigger a Fatal Error with non seekable stream, instead you are recommended to used the newgetContentmethod which will trigger an exception instead.
Deprecated
League\Csv\Abstract::__toStringuseLeague\Csv\Abstract::getContentinstead. the__toStringtriggers a Fatal Error when used on a non-seekable CSV document. use thegetContentmethod instead which will trigger an exception instead.
Fixed
- Bug fixes headers from AbstractCsv::output according to RFC6266 #250
- Make sure the internal source still exists before closing it #251
- Make sure the
Reader::createFromPathdefault open mode isrsee #258 and #266
Removed
- Nothing
9.0.1 - 2017-08-21
Added
- Nothing
Deprecated
- Nothing
Fixed
- CSV controls not applied when calling Writer::insertOne
Removed
- Nothing
9.0.0 - 2017-08-18
Added
- Improved CSV Records selection
League\Csv\Reader::getRecordsto access all CSV recordsLeague\Csv\Statementprovides a constraint builder to select CSV records.League\Csv\ResultSetrepresents the result set of the selected CSV records.League\Csv\delimiter_detectfunction to detect CSV delimiter character
- Improved CSV document header selection.
League\Csv\Reader::getHeaderLeague\Csv\Reader::getHeaderOffsetLeague\Csv\Reader::setHeaderOffset
- Improved CSV Records conversion
League\Csv\CharsetConverterconverts CSV records charset.League\Csv\XMLConverterconverts CSV records into DOMDocumentLeague\Csv\HTMLConverterconverts CSV records into HTML table.
- Improved Exception handling
League\Csv\Exceptionthe default exceptionLeague\Csv\CannotInsertRecord
- Improved CSV document output
League\Csv\AbstractCsv::chunkmethod to output the CSV document in chunkLeague\Csv\bom_matchfunction to detect BOM sequence in a given stringLeague\Csv\ByteSequenceinterface to decoupled BOM sequence from CSV documents
- Improved CSV records column count consistency on insertion
League\Csv\ColumnConsistency
- Improved CSV document flush mechanism on insertion
League\Csv\Writer::setFlushThresholdLeague\Csv\Writer::getFlushThreshold
- Improve RFC4180 compliance
League\Csv\RFC4180Fieldto format field according to RFC4180 rules
Deprecated
- Nothing
Fixed
-
Improved CSV record insertion
League\Csv\Writer::insertOneonly accepts an array and returns a integerLeague\Csv\Writer::insertAllonly accepts an iterable of array and returns an integer
-
Normalized CSV offset returned value
League\Csv\Reader::fetchColumnalways returns the CSV document original offset.
Removed
examplesdirectoryPHP5support- The following method is removed because The BOM API is simplified:
League\Csv\AbstractCsv::stripBOM
- All conversion methods are removed in favor of the conversion classes:
League\Csv\Writer::jsonSerializeLeague\Csv\AbstractCsv::toHTMLLeague\Csv\AbstractCsv::toXMLLeague\Csv\AbstractCsv::setInputEncodingLeague\Csv\AbstractCsv::getInputEncoding
- The following methods are removed because the PHP stream filter API is simplified:
League\Csv\AbstractCsv::isActiveStreamFilterLeague\Csv\AbstractCsv::setStreamFilterModeLeague\Csv\AbstractCsv::appendStreamFilterLeague\Csv\AbstractCsv::prependStreamFilterLeague\Csv\AbstractCsv::removeStreamFilterLeague\Csv\AbstractCsv::clearStreamFilters
- The following methods are removed because switching between connections is no longer possible:
League\Csv\AbstractCsv::newReaderLeague\Csv\AbstractCsv::newWriterLeague\Csv\Reader::getNewlineLeague\Csv\Reader::setNewline
- The Exception mechanism is improved thus the following class is removed:
League\Csv\Exception\InvalidRowException;
- The CSV records filtering methods are removed in favor of the
League\Csv\Statementclass:League\Csv\AbstractCsv::addFilter,League\Csv\AbstractCsv::addSortBy,League\Csv\AbstractCsv::setOffset,League\Csv\AbstractCsv::setLimit;
- CSV records selecting API methods is simplified:
League\Csv\Reader::eachLeague\Csv\Reader::fetchLeague\Csv\Reader::fetchAllLeague\Csv\Reader::fetchAssocLeague\Csv\Reader::fetchPairsWithoutDuplicates
- Formatting and validating CSV records on insertion is simplified, the following methods are removed:
League\Csv\Writer::hasFormatterLeague\Csv\Writer::removeFormatterLeague\Csv\Writer::clearFormattersLeague\Csv\Writer::hasValidatorLeague\Csv\Writer::removeValidatorLeague\Csv\Writer::clearValidatorsLeague\Csv\Writer::getIterator
- The following Formatters and Validators classes are removed from the package:
League\Csv\Plugin\SkipNullValuesFormatterLeague\Csv\Plugin\ForbiddenNullValuesValidatorLeague\Csv\Plugin\ColumnConsistencyValidatorreplace byLeague\Csv\ColumnConsistency
League\Csv\Writerno longers implements theIteratorAggregateinterfaceLeague\Csv\AbstractCsv::fetchDelimitersOccurrenceis removed replace byLeague\Csv\delimiter_detectfunction
8.2.2 - 2017-07-12
Added
- None
Deprecated
- None
Fixed
Writer::insertOnewas silently failing when inserting record in a CSV document in non-writing mode.- bug fix docblock
Removed
- None
8.2.1 - 2017-02-22
Added
- Nothing
Deprecated
- Nothing
Fixed
- internal
Reader::getRowwhen using aStreamIteratorissue #213 - Removed
@deprecatedfrom selected methods issue #208
Removed
- Nothing
8.2.0 - 2017-01-25
Added
AbstractCsv::createFromStreamto enable working with resource stream issue #202
Deprecated
League\Csv\AbstractCsv::stripBomLeague\Csv\Reader::getOffsetLeague\Csv\Reader::getLimitLeague\Csv\Reader::getSortByLeague\Csv\Reader::getFilterLeague\Csv\Reader::setOffsetLeague\Csv\Reader::setLimitLeague\Csv\Reader::addSortByLeague\Csv\Reader::addFilterLeague\Csv\Reader::fetchLeague\Csv\Reader::eachLeague\Csv\Reader::fetchPairsWithoutDuplicatesLeague\Csv\Reader::fetchAssocLeague\Csv\Writer::removeFormatterLeague\Csv\Writer::hasFormatterLeague\Csv\Writer::clearFormattersLeague\Csv\Writer::removeValidatorLeague\Csv\Writer::hasValidatorLeague\Csv\Writer::clearValidatorsLeague\Csv\Writer::jsonSerializeLeague\Csv\Writer::toHTMLLeague\Csv\Writer::toXML
Fixed
- Nothing
Removed
- Nothing
8.1.2 - 2016-10-27
Added
- Nothing
Deprecated
- Nothing
Fixed
- BOM filtering fix issue #184
AbstractCsv::BOM_UTF32_LEvalue fixed
Removed
- Nothing
8.1.1 - 2016-09-05
Added
- Nothing
Deprecated
- Nothing
Fixed
getInputBOMmethod name is now consistent everywhere in the API PR #171- preserve fileObject CSV controls commit #8a20c56
- Change
outputmethod header content-type value totext/csvPR #175
Removed
- Nothing
8.1.0 - 2016-05-31
Added
- The package now includes its own autoloader.
Ouput::getInputEncodingOuput::setInputEncoding
Deprecated
Ouput::getEncodingFromreplaced byOuput::getInputEncodingOuput::setEncodingFromreplaced byOuput::setInputEncoding
Fixed
- Stream Filters are now url encoded before usage issue #72
- All internal parameters are now using the snake case format
Removed
- Nothing
8.0.0 - 2015-12-11
Added
Reader::fetchPairsReader::fetchPairsWithoutDuplicates
Deprecated
- Nothing
Fixed
Reader::fetchColumnandReader::fetchAssocnow returnIteratorReader::fetchAssoccallable argument expects an indexed row using the submitted keys as its first argumentReader::fetchColumncallable argument expects the selected column value as its first argument- Default value on
setOutputBOMis removed AbstractCsv::getOutputBOMalways return a stringAbstractCsv::getInputBOMalways return a string
Removed
Controls::setFlagsControls::getFlagsControls::detectDelimiterListQueryFilter::removeFilterQueryFilter::removeSortByQueryFilter::hasFilterQueryFilter::hasSortByQueryFilter::clearFilterQueryFilter::clearSortByReader::query- The
$newlineargument fromAbstractCsv::createFromString
7.2.0 - 2015-11-02
Added
Reader::fetchreplacesLeague\Csv\Reader::queryfor naming consistencyControls::fetchDelimitersOccurrenceto replaceControls::detectDelimiterListthe latter gives erronous results
Deprecated
Controls::detectDelimiterListReader::query- The
$newlineargument fromAbstractCsv::createFromString
Fixed
- Streamming feature no longer trim filter name argument issue #122
- Fix default
SplFileObjectflags usage PR #130 AbstractCsv::createFromStringno longer trim the submitted string issue #132
Removed
- Nothing
7.1.2 - 2015-06-10
Added
- Nothing
Deprecated
- Nothing
Fixed
- Enclosures should be removed when a BOM sequence is stripped issue #102
Removed
- Nothing
7.1.1 - 2015-05-20
Added
- Nothing
Deprecated
- Nothing
Fixed
SplFileObjectflags were not always applied using query filter issue #99
Removed
- Nothing
7.1.0 - 2015-05-06
Added
stripBOMquery filtering method to ease removing the BOM sequence when querying the CSV document.- All query filters are now accessible in the
Writerclass for conversion methods.
Deprecated
- Nothing
Fixed
- Internal code has been updated to take into account issue #68479
setFlagson conversion methods SplFileObject default flags areSplFileObject::READ_AHEAD|SplFileObject::SKIP_EMPTYinsertOnenow takes into account the escape character when modified after the first insert.
Removed
- Nothing
7.0.1 - 2015-03-23
Added
- Nothing
Deprecated
- Nothing
Fixed
setFlags:SplFileObject::DROP_NEW_LINEcan be remove usingsetFlagsmethod.
Removed
- Nothing
7.0.0 - 2015-02-19
Added
- A new flexible mechanism to format and validate a row before its insertion by adding
Writer::addFormatterto add a formatter to theWriterobjectWriter::removeFormatterto remove an already registered formatterWriter::hasFormatterto detect the presence of a formatterWriter::clearFormattersto clear all registered formatterWriter::addValidatorto add a validator to theWriterobjectWriter::removeValidatorto remove an already registered validatorWriter::hasValidatorto detect the presence of a validatorWriter::clearValidatorsto clear all registered validatorLeague\Csv\Exception\InvalidRowExceptionexception thrown when row validation failed
- Classes to maintain removed features from the
WriterclassLeague\Csv\Plugin\ColumnConsistencyValidatorto validate column consistency on insertionLeague\Csv\Plugin\ForbiddenNullValuesValidatorto validatenullvalue on insertionLeague\Csv\Plugin\SkipNullValuesFormatterto formatnullvalue on insertion
Deprecated
- Nothing
Fixed
jsonSerialize,toXMLandtoHTMLoutput can be modified usingReaderquery options methods.AbstractCSV::detectDelimiterListindex keys now represents the occurrence of the found delimiter.getNewlineandsetNewlineare accessible on theReaderclass too.- the named constructor
createFromStringnow accepts the$newlinesequence as a second argument to specify the last added new line character to better work with interoperability. - Default value on CSV controls setter methods
setDelimiter,setEnclosureandsetEscapeare removed - Default
SplFileObjectflags value is nowSplFileObject::READ_CSV|SplFileObject::DROP_NEW_LINE - All CSV properties are now copied when using
newReaderandnewWritermethods - BOM addition on output improved by removing if found the existing BOM character
- the
AbstractCSV::outputmethod now returns the number of bytes send to the output buffer Reader::fetchColumnwill automatically filter out non existing values from the return array
Removed
- Setting
ini_set("auto_detect_line_endings", true);is no longer set in the class constructor. Mac OS X users must explicitly set this ini options in their script. WriterandReaderdefault constructor are removed from public API in favor of the named constructors.- All
Writermethods and constant related to CSV data validation and formatting before insertionWriter::getNullHandlingModeWriter::setNullHandlingModeWriter::setColumnsCountWriter::getColumnsCountWriter::autodetectColumnsCountWriter::NULL_AS_EXCEPTIONWriter::NULL_AS_EMPTYWriter::NULL_AS_SKIP_CELL
6.3.0 - 2015-01-21
Added
AbstractCSV::setOutputBOMAbstractCSV::getOutputBOMAbstractCSV::getInputBOM
to manage BOM character with CSV.
Deprecated
- Nothing
Fixed
- Nothing
Removed
- Nothing
6.2.0 - 2014-12-12
Added
Writer::setNewline,Writer::getNewlineto control the newline sequence character added at the end of each CSV row.
Deprecated
- Nothing
Fixed
- Nothing
Removed
- Nothing
6.1.0 - 2014-12-08
Added
Reader::fetchAssocnow also accepts an integer as first argument representing a row index.
Deprecated
- Nothing
Fixed
- Nothing
Removed
- Nothing
6.0.1 - 2014-11-12
Added
- Nothing
Deprecated
- Nothing
Fixed
- Bug Fixed
detectDelimiterList
Removed
- Nothing
6.0.0 - 2014-08-28
Added
- Stream Filter API in
League\Csv\AbstractCsv - named constructors
createFromPathandcreateFromFileObjectinLeague\Csv\AbstractCsvto ease CSV object instantiation detectDelimiterListinLeague\Csv\AbstractCsvto replace and remove the use ofRuntimeExceptionindetectDelimitersetEncodingFromandsetDecodingFrominLeague\Csv\AbstractCsvto replacesetEncodingandgetEncodingfor naming consistencynewWriterandnewReadermethods inLeague\Csv\AbstractCsvto replaceWriter::getReaderandReader::getWriter
Deprecated
- Nothing
Fixed
League\Csv\Reader::eachmore strict$callableMUST returnstrue
Remove
League\Csv\AbstractCsv::detectDelimiterLeague\Csv\AbstractCsv::setEncodingandLeague\Csv\AbstractCsv::getEncodingLeague\Csv\Reader::setSortByLeague\Csv\Reader::setFilterLeague\Csv\Reader::getWriterLeague\Csv\Writer::getReaderLeague\Csv\Reader::fetchCol
5.4.0 - 2014-04-17
Added
League\Csv\Writer::setColumnsCount,League\Csv\Writer::getColumnsCount,League\Csv\Writer::autodetectColumnsCountto enable column consistency in writer modeLeague\Csv\Reader::fetchColumnreplacesLeague\Csv\Reader::fetchColfor naming consistency
Deprecated
League\Csv\Reader::fetchCol
Fixed
- Nothing
Removed
- Nothing
5.3.1 - 2014-04-09
Added
- Nothing
Deprecated
- Nothing
Fixed
$open_modedefault tor+inLeague\Csv\AbstractCsvconstructors
Removed
- Nothing
5.3.0 - 2014-03-24
Added
League\Csv\Writer::setNullHandlingModeandLeague\Csv\Writer::getNullHandlingModeto handlenullvalue
Deprecated
- Nothing
Fixed
setting ini_set("auto_detect_line_endings", true);no longer needed for Mac OS
Removed
- Nothing
5.2.0 - 2014-03-13
Added
League\Csv\Reader::addSortBy,League\Csv\Reader::removeSortBy,League\Csv\Reader::hasSortBy,League\Csv\Reader::clearSortByto improve sortingLeague\Csv\Reader::clearFilterto align extract filter capabilities to sorting capabilities
Deprecated
League\Csv\Reader::setSortByreplaced by a better implementation
Fixed
League\Csv\Reader::setOffsetnow default to 0;League\Csv\Reader::setLimitnow default to -1;detectDelimiterbug fixes
Removed
- Nothing
5.1.0 - 2014-03-11
Added
League\Csv\Reader::eachto ease CSV import dataLeague\Csv\Reader::addFilter,League\Csv\Reader::removeFilter,League\Csv\Reader::hasFilterto improve extract filter capabilitiesdetectDelimitermethod toLeague\Csv\AbstractCsvto sniff CSV delimiter character.
Deprecated
League\Csv\Reader::setFilterreplaced by a better implementation
Fixed
- Nothing
Removed
- Nothing
5.0.0 - 2014-02-28
Added
- Change namespace from
Bakame\CsvtoLeague\Csv
Deprecated
- Nothing
Fixed
- Nothing
Removed
- Nothing
4.2.1 - 2014-02-22
Fixed
$open_modevalidation is done by PHP internals directly
Removed
- Nothing
4.2.0 - 2014-02-17
Added
toXMLmethod to transcode the CSV into a XML inBakame\Csv\AbstractCsv
Fixed
toHTMLmethod bug inBakame\Csv\AbstractCsvoutputmethod accepts an optional$filenameargumentBakame\Csv\Reader::fetchColdefault to$columnIndex = 0Bakame\Csv\Reader::fetchOnedefault to$offset = 0
4.1.2 - 2014-02-14
Added
- Move from
PSR-0toPSR-4to autoload the library
4.1.1 - 2014-02-14
Fixed
Bakame\Csv\Readermethods fixedjsonSerializebug fixed
4.1.0 - 2014-02-07
Added
getEncodingandsetEncodingmethods toBakame\Csv\AbstractCsv
Fixed
Bakame\Csv\Writer::insertOnetakes into account CSV controlstoHTMLmethod takes into account encoding
4.0.0 - 2014-02-05
Added
Bakame\Csv\WriterBakame\Csv\WriterandBakame\Csv\ReaderextendBakame\Csv\AbstractCsv
Deprecated
- Nothing
Fixed
Bakame\Csv\Reader::fetchOneis no longer deprecatedBakame\Csv\Reader::fetchColno longer accepts a third parameter$strict
Removed
Bakame\Csv\Codecnow the library is composer of 2 main classesBakame\Csv\Reader::getFileBakame\Csv\Reader::fetchValueBakame\Csv\Readerno longer implements theArrayAccessinterface
3.3.0 - 2014-01-28
Added
Bakame\Csv\ReaderimplementsIteratorAggregateInterfaceBakame\Csv\Reader::createFromStringto create a CSV object from a raw stringBakame\Csv\Reader::queryaccept an optional$callableparameter
Deprecated
Bakame\Csv\Reader::getFilein favor ofBakame\Csv\Reader::getIterator
Removed
Bakame\Csv\ReaderInterfaceuseless interface
Fixed
Bakame\Csv\Reader::fetch*$callableparameter is normalized to accept an arrayBakame\Csv\Reader::fetchColaccepts a third parameter$strict
3.2.0 - 2014-01-16
Added
Bakame\Csv\Readerimplements the following interfacesJsonSerializableandArrayAccessBakame\Csv\Reader::toHTMLto output the CSV as a HTML tableBakame\Csv\Reader::setFilter,Bakame\Csv\Reader::setSortBy,Bakame\Csv\Reader::setOffset,Bakame\Csv\Reader::setLimit,Bakame\Csv\Reader::queryto perform SQL like queries on the CSV content.Bakame\Csv\Codec::setFlags,Bakame\Csv\Codec::getFlags, Bakame\Csv\Codec::__construct : add an optional$flagsparameter to enable the use ofSplFileObjectconstants flags
Deprecated
Bakame\Csv\Reader::fetchOnereplaced byBakame\Csv\Reader::offsetGetBakame\Csv\Reader::fetchValueuseless method
3.1.0 - 2014-01-13
Added
Bakame\Csv\Reader::outputoutput the CSV data directly in the output bufferBakame\Csv\Reader::__toStringcan be use to echo the raw CSV
3.0.1 - 2014-01-10
Fixed
Bakame\Csv\Reader::fetchAssocwhen users keys and CSV row data don't have the same length
3.0.0 - 2014-01-10
Added
Bakame\Csv\ReaderInterfaceBakame\Csv\Readerclass
Fixed
Bakame\Csv\Codec::loadStringreturns aBakame\Csv\ReaderobjectBakame\Csv\Codec::loadFilereturns aBakame\Csv\ReaderobjectBakame\Csv\Codec::savereturns aBakame\Csv\Readerobject
2.0.0 - 2014-01-09
Added
Bakame\Csv\CsvCodecclass renamedBakame\Csv\Codec
Deprecated
- Nothing
Fixed
- Nothing
Removed
Bakame\Csv\Codec::createfrom public API
1.0.0 - 2013-12-03
Initial Release of Bakame\Csv