Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
1111 lines (679 sloc) 28 KB

Changelog

All Notable changes to Csv will be documented in this file

9.6.2 - TBD

Added

  • Using Github actions as development tools.

Deprecated

  • None

Fixed

  • Adding support for PHP8

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::create named constructor to ease constraint builder instantiation
  • League\Csv\Statement can now also process League\Csv\ResultSet instances.
  • League\Csv\TabularDataReader interface to represent how to read tabular data
  • League\Csv\ResultSet::getRecords has an optional $header second argument to make the method works like League\Csv\Reader::getRecords
  • League\Csv\ResultSet::createFromTabularDataReader create a new instance from League\Csv\TabularDataReader implementing class.

Deprecated

  • Nothing

Fixed

  • League\Csv\Reader no longer uses __call to implement fetchOne, fetchPairs and fetchColumn methods.

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\Exception exception marker class #360, #361 feature proposed and developed by Darren Miller
    • League\Csv\UnavailableFeature
    • League\Csv\InvalidArgument
    • League\Csv\SyntaxError

Deprecated

  • Nothing

Fixed

  • bug fix bom_match function see issue #363 resolved based on PR from Jerry Martinez
  • bug fix delemiter_detect function see issue #366

Removed

  • Nothing

9.4.1 - 2019-10-17

Added

  • Nothing

Deprecated

  • Nothing

Fixed

  • bug fix the escape mechanism polyfill #358 fix provided by on2

Removed

  • Nothing

9.4.0 - 2019-10-02

Added

  • Adding support for controlling empty record presence in Reader::getRecords return value.

    • Reader::includeEmptyRecords
    • Reader::skipEmptyRecords
    • Reader::isEmptyRecordsIncluded
  • Adding support for controlling Input BOM usage in the library:

    • AbstractCsv::skipInputBOM
    • AbstractCsv::includeInputBOM
    • AbstractCsv::isInputBOMIncluded

Deprecated

  • Nothing

Fixed

  • EmptyEscapeParser::parse no longer auto skip empty records

Removed

  • Nothing

9.3.0 - 2019-07-30

Added

  • XMLConverter::import see #348 thanks @kusabi
  • Support for thead, tfoot and tbody in HTMLConverter::convert via the addition of protected methods HTMLConverter::addHTMLAttributes and HTMLConverter::appendHeaderSection #348 thanks @kusabi

Deprecated

  • Nothing

Fixed

  • Internal improvement in Reader dockblock 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::chunk see #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::getPathname see #321 thanks @tomkyle

Deprecated

  • League\Csv\RFC4180Field use AbstractCSV::setEscape method with an empty string instead.

Fixed

  • AbstractCSV::__construct correctly initializes properties

  • AbstractCSV::createFromString named constructor default argument is now the empty string

  • AbstractCSV::setEscape now accepts the empty string like fputcsv and fgetcsv

  • Writer::insertOne fixes throwing exception when record can not be inserted

  • XMLConverter convert to string the record value to avoid PHP warning on null value

  • Internal Stream::createFromString named constructor default argument is now the empty string

  • Internal Stream::fwrite improved

  • Internal Stream::__destruct no longer emit warning on invalid stream filter removal.

  • Internal Stream::seek returns 0 if the seeked position 0 is valid see #321 thanks @HaozhouChen

  • Reader:getHeader when the record is an empty line.

Removed

  • Nothing

9.1.4 - 2018-05-01

Added

  • Nothing

Deprecated

  • Nothing

Fixed

  • Writer::setFlushThreshold should accept 1 as an argument #289
  • CharsetConverter::convert should not try to convert numeric value #287

Removed

  • Nothing

9.1.3 - 2018-03-12

Added

  • Nothing

Deprecated

  • Nothing

Fixed

  • Writer::insertOne allow 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_iterable polyfill for PHP7.0
  • Reader::getHeader no 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_last usage 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\EncloseField to force enclosure insertion on every field. #269
  • League\Csv\EscapeFormula a League CSV formatter to prevent CSV Formula Injection in Spreadsheet programs.
  • League\Csv\RFC4180Field::addTo accept an option $replace_whitespace argument to improve RFC4180 compliance.
  • League\Csv\Abstract::getContent to replace League\Csv\Abstract::__toString. The __toString method may trigger a Fatal Error with non seekable stream, instead you are recommended to used the new getContent method which will trigger an exception instead.

Deprecated

  • League\Csv\Abstract::__toString use League\Csv\Abstract::getContent instead. the __toString triggers a Fatal Error when used on a non-seekable CSV document. use the getContent method 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::createFromPath default open mode is r see #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::getRecords to access all CSV records
    • League\Csv\Statement provides a constraint builder to select CSV records.
    • League\Csv\ResultSet represents the result set of the selected CSV records.
    • League\Csv\delimiter_detect function to detect CSV delimiter character
  • Improved CSV document header selection.
    • League\Csv\Reader::getHeader
    • League\Csv\Reader::getHeaderOffset
    • League\Csv\Reader::setHeaderOffset
  • Improved CSV Records conversion
    • League\Csv\CharsetConverter converts CSV records charset.
    • League\Csv\XMLConverter converts CSV records into DOMDocument
    • League\Csv\HTMLConverter converts CSV records into HTML table.
  • Improved Exception handling
    • League\Csv\Exception the default exception
    • League\Csv\CannotInsertRecord
  • Improved CSV document output
    • League\Csv\AbstractCsv::chunk method to output the CSV document in chunk
    • League\Csv\bom_match function to detect BOM sequence in a given string
    • League\Csv\ByteSequence interface 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::setFlushThreshold
    • League\Csv\Writer::getFlushThreshold
  • Improve RFC4180 compliance
    • League\Csv\RFC4180Field to format field according to RFC4180 rules

Deprecated

  • Nothing

Fixed

  • Improved CSV record insertion

    • League\Csv\Writer::insertOne only accepts an array and returns a integer
    • League\Csv\Writer::insertAll only accepts an iterable of array and returns an integer
  • Normalized CSV offset returned value

    • League\Csv\Reader::fetchColumn always returns the CSV document original offset.

Removed

  • examples directory
  • PHP5 support
  • 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::jsonSerialize
    • League\Csv\AbstractCsv::toHTML
    • League\Csv\AbstractCsv::toXML
    • League\Csv\AbstractCsv::setInputEncoding
    • League\Csv\AbstractCsv::getInputEncoding
  • The following methods are removed because the PHP stream filter API is simplified:
    • League\Csv\AbstractCsv::isActiveStreamFilter
    • League\Csv\AbstractCsv::setStreamFilterMode
    • League\Csv\AbstractCsv::appendStreamFilter
    • League\Csv\AbstractCsv::prependStreamFilter
    • League\Csv\AbstractCsv::removeStreamFilter
    • League\Csv\AbstractCsv::clearStreamFilters
  • The following methods are removed because switching between connections is no longer possible:
    • League\Csv\AbstractCsv::newReader
    • League\Csv\AbstractCsv::newWriter
    • League\Csv\Reader::getNewline
    • League\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\Statement class:
    • 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::each
    • League\Csv\Reader::fetch
    • League\Csv\Reader::fetchAll
    • League\Csv\Reader::fetchAssoc
    • League\Csv\Reader::fetchPairsWithoutDuplicates
  • Formatting and validating CSV records on insertion is simplified, the following methods are removed:
    • League\Csv\Writer::hasFormatter
    • League\Csv\Writer::removeFormatter
    • League\Csv\Writer::clearFormatters
    • League\Csv\Writer::hasValidator
    • League\Csv\Writer::removeValidator
    • League\Csv\Writer::clearValidators
    • League\Csv\Writer::getIterator
  • The following Formatters and Validators classes are removed from the package:
    • League\Csv\Plugin\SkipNullValuesFormatter
    • League\Csv\Plugin\ForbiddenNullValuesValidator
    • League\Csv\Plugin\ColumnConsistencyValidator replace by League\Csv\ColumnConsistency
  • League\Csv\Writer no longers implements the IteratorAggregate interface
  • League\Csv\AbstractCsv::fetchDelimitersOccurrence is removed replace by League\Csv\delimiter_detect function

8.2.2 - 2017-07-12

Added

  • None

Deprecated

  • None

Fixed

  • Writer::insertOne was 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::getRow when using a StreamIterator issue #213
  • Removed @deprecated from selected methods issue #208

Removed

  • Nothing

8.2.0 - 2017-01-25

Added

  • AbstractCsv::createFromStream to enable working with resource stream issue #202

Deprecated

  • League\Csv\AbstractCsv::stripBom
  • League\Csv\Reader::getOffset
  • League\Csv\Reader::getLimit
  • League\Csv\Reader::getSortBy
  • League\Csv\Reader::getFilter
  • League\Csv\Reader::setOffset
  • League\Csv\Reader::setLimit
  • League\Csv\Reader::addSortBy
  • League\Csv\Reader::addFilter
  • League\Csv\Reader::fetch
  • League\Csv\Reader::each
  • League\Csv\Reader::fetchPairsWithoutDuplicates
  • League\Csv\Reader::fetchAssoc
  • League\Csv\Writer::removeFormatter
  • League\Csv\Writer::hasFormatter
  • League\Csv\Writer::clearFormatters
  • League\Csv\Writer::removeValidator
  • League\Csv\Writer::hasValidator
  • League\Csv\Writer::clearValidators
  • League\Csv\Writer::jsonSerialize
  • League\Csv\Writer::toHTML
  • League\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_LE value fixed

Removed

  • Nothing

8.1.1 - 2016-09-05

Added

  • Nothing

Deprecated

  • Nothing

Fixed

  • getInputBOM method name is now consistent everywhere in the API PR #171
  • preserve fileObject CSV controls commit #8a20c56
  • Change output method header content-type value to text/csv PR #175

Removed

  • Nothing

8.1.0 - 2016-05-31

Added

  • The package now includes its own autoloader.
  • Ouput::getInputEncoding
  • Ouput::setInputEncoding

Deprecated

  • Ouput::getEncodingFrom replaced by Ouput::getInputEncoding
  • Ouput::setEncodingFrom replaced by Ouput::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::fetchPairs
  • Reader::fetchPairsWithoutDuplicates

Deprecated

  • Nothing

Fixed

  • Reader::fetchColumn and Reader::fetchAssoc now return Iterator
  • Reader::fetchAssoc callable argument expects an indexed row using the submitted keys as its first argument
  • Reader::fetchColumn callable argument expects the selected column value as its first argument
  • Default value on setOutputBOM is removed
  • AbstractCsv::getOutputBOM always return a string
  • AbstractCsv::getInputBOM always return a string

Removed

  • Controls::setFlags
  • Controls::getFlags
  • Controls::detectDelimiterList
  • QueryFilter::removeFilter
  • QueryFilter::removeSortBy
  • QueryFilter::hasFilter
  • QueryFilter::hasSortBy
  • QueryFilter::clearFilter
  • QueryFilter::clearSortBy
  • Reader::query
  • The $newline argument from AbstractCsv::createFromString

7.2.0 - 2015-11-02

Added

  • Reader::fetch replaces League\Csv\Reader::query for naming consistency
  • Controls::fetchDelimitersOccurrence to replace Controls::detectDelimiterList the latter gives erronous results

Deprecated

  • Controls::detectDelimiterList
  • Reader::query
  • The $newline argument from AbstractCsv::createFromString

Fixed

  • Streamming feature no longer trim filter name argument issue #122
  • Fix default SplFileObject flags usage PR #130
  • AbstractCsv::createFromString no 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

  • SplFileObject flags were not always applied using query filter issue #99

Removed

  • Nothing

7.1.0 - 2015-05-06

Added

  • stripBOM query filtering method to ease removing the BOM sequence when querying the CSV document.
  • All query filters are now accessible in the Writer class for conversion methods.

Deprecated

  • Nothing

Fixed

  • Internal code has been updated to take into account issue #68479
  • setFlags on conversion methods SplFileObject default flags are SplFileObject::READ_AHEAD|SplFileObject::SKIP_EMPTY
  • insertOne now 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_LINE can be remove using setFlags method.

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::addFormatter to add a formatter to the Writer object
    • Writer::removeFormatter to remove an already registered formatter
    • Writer::hasFormatter to detect the presence of a formatter
    • Writer::clearFormatters to clear all registered formatter
    • Writer::addValidator to add a validator to the Writer object
    • Writer::removeValidator to remove an already registered validator
    • Writer::hasValidator to detect the presence of a validator
    • Writer::clearValidators to clear all registered validator
    • League\Csv\Exception\InvalidRowException exception thrown when row validation failed
  • Classes to maintain removed features from the Writer class
    • League\Csv\Plugin\ColumnConsistencyValidator to validate column consistency on insertion
    • League\Csv\Plugin\ForbiddenNullValuesValidator to validate null value on insertion
    • League\Csv\Plugin\SkipNullValuesFormatter to format null value on insertion

Deprecated

  • Nothing

Fixed

  • jsonSerialize, toXML and toHTML output can be modified using Reader query options methods.
  • AbstractCSV::detectDelimiterList index keys now represents the occurrence of the found delimiter.
  • getNewline and setNewline are accessible on the Reader class too.
  • the named constructor createFromString now accepts the $newline sequence 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, setEnclosure and setEscape are removed
  • Default SplFileObject flags value is now SplFileObject::READ_CSV|SplFileObject::DROP_NEW_LINE
  • All CSV properties are now copied when using newReader and newWriter methods
  • BOM addition on output improved by removing if found the existing BOM character
  • the AbstractCSV::output method now returns the number of bytes send to the output buffer
  • Reader::fetchColumn will 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.
  • Writer and Reader default constructor are removed from public API in favor of the named constructors.
  • All Writer methods and constant related to CSV data validation and formatting before insertion
    • Writer::getNullHandlingMode
    • Writer::setNullHandlingMode
    • Writer::setColumnsCount
    • Writer::getColumnsCount
    • Writer::autodetectColumnsCount
    • Writer::NULL_AS_EXCEPTION
    • Writer::NULL_AS_EMPTY
    • Writer::NULL_AS_SKIP_CELL

6.3.0 - 2015-01-21

Added

  • AbstractCSV::setOutputBOM
  • AbstractCSV::getOutputBOM
  • AbstractCSV::getInputBOM

to manage BOM character with CSV.

Deprecated

  • Nothing

Fixed

  • Nothing

Removed

  • Nothing

6.2.0 - 2014-12-12

Added

  • Writer::setNewline , Writer::getNewline to 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::fetchAssoc now 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 createFromPath and createFromFileObject in League\Csv\AbstractCsv to ease CSV object instantiation
  • detectDelimiterList in League\Csv\AbstractCsv to replace and remove the use of RuntimeException in detectDelimiter
  • setEncodingFrom and setDecodingFrom in League\Csv\AbstractCsv to replace setEncoding and getEncoding for naming consistency
  • newWriter and newReader methods in League\Csv\AbstractCsv to replace Writer::getReader and Reader::getWriter

Deprecated

  • Nothing

Fixed

  • League\Csv\Reader::each more strict $callable MUST returns true

Remove

  • League\Csv\AbstractCsv::detectDelimiter
  • League\Csv\AbstractCsv::setEncoding and League\Csv\AbstractCsv::getEncoding
  • League\Csv\Reader::setSortBy
  • League\Csv\Reader::setFilter
  • League\Csv\Reader::getWriter
  • League\Csv\Writer::getReader
  • League\Csv\Reader::fetchCol

5.4.0 - 2014-04-17

Added

  • League\Csv\Writer::setColumnsCount, League\Csv\Writer::getColumnsCount, League\Csv\Writer::autodetectColumnsCount to enable column consistency in writer mode
  • League\Csv\Reader::fetchColumn replaces League\Csv\Reader::fetchCol for naming consistency

Deprecated

  • League\Csv\Reader::fetchCol

Fixed

  • Nothing

Removed

  • Nothing

5.3.1 - 2014-04-09

Added

  • Nothing

Deprecated

  • Nothing

Fixed

  • $open_mode default to r+ in League\Csv\AbstractCsv constructors

Removed

  • Nothing

5.3.0 - 2014-03-24

Added

  • League\Csv\Writer::setNullHandlingMode and League\Csv\Writer::getNullHandlingMode to handle null value

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::clearSortBy to improve sorting
  • League\Csv\Reader::clearFilter to align extract filter capabilities to sorting capabilities

Deprecated

  • League\Csv\Reader::setSortBy replaced by a better implementation

Fixed

  • League\Csv\Reader::setOffset now default to 0;
  • League\Csv\Reader::setLimit now default to -1;
  • detectDelimiter bug fixes

Removed

  • Nothing

5.1.0 - 2014-03-11

Added

  • League\Csv\Reader::each to ease CSV import data
  • League\Csv\Reader::addFilter, League\Csv\Reader::removeFilter, League\Csv\Reader::hasFilter to improve extract filter capabilities
  • detectDelimiter method to League\Csv\AbstractCsv to sniff CSV delimiter character.

Deprecated

  • League\Csv\Reader::setFilter replaced by a better implementation

Fixed

  • Nothing

Removed

  • Nothing

5.0.0 - 2014-02-28

Added

  • Change namespace from Bakame\Csv to League\Csv

Deprecated

  • Nothing

Fixed

  • Nothing

Removed

  • Nothing

4.2.1 - 2014-02-22

Fixed

  • $open_mode validation is done by PHP internals directly

Removed

  • Nothing

4.2.0 - 2014-02-17

Added

  • toXML method to transcode the CSV into a XML in Bakame\Csv\AbstractCsv

Fixed

  • toHTML method bug in Bakame\Csv\AbstractCsv
  • output method accepts an optional $filename argument
  • Bakame\Csv\Reader::fetchCol default to $columnIndex = 0
  • Bakame\Csv\Reader::fetchOne default to $offset = 0

4.1.2 - 2014-02-14

Added

  • Move from PSR-0 to PSR-4 to autoload the library

4.1.1 - 2014-02-14

Fixed

  • Bakame\Csv\Reader methods fixed
  • jsonSerialize bug fixed

4.1.0 - 2014-02-07

Added

  • getEncoding and setEncoding methods to Bakame\Csv\AbstractCsv

Fixed

  • Bakame\Csv\Writer::insertOne takes into account CSV controls
  • toHTML method takes into account encoding

4.0.0 - 2014-02-05

Added

  • Bakame\Csv\Writer
  • Bakame\Csv\Writer and Bakame\Csv\Reader extend Bakame\Csv\AbstractCsv

Deprecated

  • Nothing

Fixed

  • Bakame\Csv\Reader::fetchOne is no longer deprecated
  • Bakame\Csv\Reader::fetchCol no longer accepts a third parameter $strict

Removed

  • Bakame\Csv\Codec now the library is composer of 2 main classes
  • Bakame\Csv\Reader::getFile
  • Bakame\Csv\Reader::fetchValue
  • Bakame\Csv\Reader no longer implements the ArrayAccess interface

3.3.0 - 2014-01-28

Added

  • Bakame\Csv\Reader implements IteratorAggregate Interface
  • Bakame\Csv\Reader::createFromString to create a CSV object from a raw string
  • Bakame\Csv\Reader::query accept an optional $callable parameter

Deprecated

  • Bakame\Csv\Reader::getFile in favor of Bakame\Csv\Reader::getIterator

Removed

  • Bakame\Csv\ReaderInterface useless interface

Fixed

  • Bakame\Csv\Reader::fetch* $callable parameter is normalized to accept an array
  • Bakame\Csv\Reader::fetchCol accepts a third parameter $strict

3.2.0 - 2014-01-16

Added

  • Bakame\Csv\Reader implements the following interfaces JsonSerializable and ArrayAccess
  • Bakame\Csv\Reader::toHTML to output the CSV as a HTML table
  • Bakame\Csv\Reader::setFilter, Bakame\Csv\Reader::setSortBy, Bakame\Csv\Reader::setOffset, Bakame\Csv\Reader::setLimit, Bakame\Csv\Reader::query to perform SQL like queries on the CSV content.
  • Bakame\Csv\Codec::setFlags, Bakame\Csv\Codec::getFlags, Bakame\Csv\Codec::__construct : add an optional $flags parameter to enable the use of SplFileObject constants flags

Deprecated

  • Bakame\Csv\Reader::fetchOne replaced by Bakame\Csv\Reader::offsetGet
  • Bakame\Csv\Reader::fetchValue useless method

3.1.0 - 2014-01-13

Added

  • Bakame\Csv\Reader::output output the CSV data directly in the output buffer
  • Bakame\Csv\Reader::__toString can be use to echo the raw CSV

3.0.1 - 2014-01-10

Fixed

  • Bakame\Csv\Reader::fetchAssoc when users keys and CSV row data don't have the same length

3.0.0 - 2014-01-10

Added

  • Bakame\Csv\ReaderInterface
  • Bakame\Csv\Reader class

Fixed

  • Bakame\Csv\Codec::loadStringreturns a Bakame\Csv\Reader object
  • Bakame\Csv\Codec::loadFile returns a Bakame\Csv\Reader object
  • Bakame\Csv\Codec::save returns a Bakame\Csv\Reader object

2.0.0 - 2014-01-09

Added

  • Bakame\Csv\CsvCodec class renamed Bakame\Csv\Codec

Deprecated

  • Nothing

Fixed

  • Nothing

Removed

  • Bakame\Csv\Codec::create from public API

1.0.0 - 2013-12-03

Initial Release of Bakame\Csv

You can’t perform that action at this time.