API Reference
Complete reference for all CSV Toolkit classes, methods, and configuration options.
Factory Classes
ReaderFactory
The ReaderFactory class provides methods for creating CSV readers with automatic implementation selection.
use CsvToolkit\Factories\ReaderFactory;
Static Methods
create()
public static function create(
?string $source = null,
CsvConfig|SplConfig|null $config = null
): CsvReaderInterface
Creates a CSV reader using the best available implementation (FastCSV if available, SplFileObject as fallback).
Parameters:
$source- Optional path to the CSV file$config- Optional configuration object
Returns: CsvReaderInterface implementation
Example:
$reader = ReaderFactory::create('data.csv');
$reader = ReaderFactory::create('data.csv', new CsvConfig());
createFastCsv()
public static function createFastCsv(
?string $source = null,
CsvConfig|SplConfig|null $config = null
): CsvReader
Creates a CSV reader using the FastCSV extension (throws exception if not available).
createSpl()
public static function createSpl(
?string $source = null,
?SplConfig $config = null
): SplCsvReader
Creates a CSV reader using SplFileObject (always available).
WriterFactory
The WriterFactory class provides methods for creating CSV writers with automatic implementation selection.
use CsvToolkit\Factories\WriterFactory;
Static Methods
create()
public static function create(
string $destination,
CsvConfig|SplConfig|null $config = null
): CsvWriterInterface
Creates a CSV writer using the best available implementation.
Parameters:
$destination- File path to write to$config- Optional configuration object
Returns: CsvWriterInterface implementation
createFastCsv()
public static function createFastCsv(
string $destination,
CsvConfig|SplConfig|null $config = null
): CsvWriter
Creates a CSV writer using the FastCSV extension.
createSpl()
public static function createSpl(
string $destination,
?SplConfig $config = null
): SplCsvWriter
Creates a CSV writer using SplFileObject.
Reader Classes
CsvReader (FastCSV Implementation)
High-performance CSV reader using the FastCSV extension.
use CsvToolkit\Readers\CsvReader;
Constructor
public function __construct(
?string $source = null,
?CsvConfig $config = null
)
Methods
nextRecord()
public function nextRecord(): array|false
Reads the next record sequentially.
Returns: Array of field values, or false if end of file.
seek()
public function seek(int $position): array|false
Seeks to a specific 0-based record position.
Parameters:
$position- Zero-based position to seek to
Returns: Array of field values at the position, or false if invalid position.
getRecord()
public function getRecord(?int $position = null): array|false
Gets the record at the current position without advancing.
rewind()
public function rewind(): void
Rewinds the reader to the beginning of the data records.
getCurrentPosition()
public function getCurrentPosition(): int
Gets the current 0-based record position (-1 if no record has been read).
hasNext()
public function hasNext(): bool
Checks if more records exist from the current position.
hasRecords()
public function hasRecords(): bool
Checks if the CSV file contains any data records.
getHeader()
public function getHeader(): array|false
Gets the header row if headers are enabled.
getRecordCount()
public function getRecordCount(): ?int
Gets the total number of data records in the CSV file.
SplCsvReader (SplFileObject Implementation)
Fallback CSV reader using PHP’s built-in SplFileObject.
use CsvToolkit\Readers\SplCsvReader;
Implements the same interface as CsvReader with identical method signatures.
Writer Classes
CsvWriter (FastCSV Implementation)
High-performance CSV writer using the FastCSV extension.
use CsvToolkit\Writers\CsvWriter;
Constructor
public function __construct(
?string $destination = null,
?CsvConfig $config = null
)
Methods
write()
public function write(array $data): void
Writes a single record to the CSV file.
Parameters:
$data- Array of field values to write
writeAll()
public function writeAll(array $records): void
Writes multiple records to the CSV file.
Parameters:
$records- Array of arrays, where each sub-array is a record
setHeaders()
public function setHeaders(array $headers): void
Sets the CSV headers.
getHeaders()
public function getHeaders(): ?array
Gets the CSV headers.
flush()
public function flush(): bool
Manually flushes buffered data to disk.
Returns: True on success, false on failure.
close()
public function close(): void
Closes the writer and frees resources.
SplCsvWriter (SplFileObject Implementation)
Fallback CSV writer using PHP’s built-in SplFileObject.
use CsvToolkit\Writers\SplCsvWriter;
Implements the same interface as CsvWriter with identical method signatures.
Configuration Classes
CsvConfig (FastCSV Configuration)
Configuration class for FastCSV extension with advanced features.
use CsvToolkit\Configs\CsvConfig;
Constructor
public function __construct(?string $path = null, bool $hasHeader = true)
Methods
Basic CSV Settings
public function getDelimiter(): string
public function setDelimiter(string $delimiter): self
public function getEnclosure(): string
public function setEnclosure(string $enclosure): self
public function getEscape(): string
public function setEscape(string $escape): self
public function hasHeader(): bool
public function setHasHeader(bool $hasHeader): self
Advanced Settings
public function getEncoding(): int
public function setEncoding(Encoding|int $encoding): self
public function getWriteBOM(): bool
public function setWriteBOM(bool $writeBOM): self
public function getStrictMode(): bool
public function setStrictMode(bool $strictMode): self
public function getSkipEmptyLines(): bool
public function setSkipEmptyLines(bool $skipEmptyLines): self
public function getTrimFields(): bool
public function setTrimFields(bool $trimFields): self
public function getPreserveQuotes(): bool
public function setPreserveQuotes(bool $preserveQuotes): self
public function getAutoFlush(): bool
public function setAutoFlush(bool $autoFlush): self
File Settings
public function getPath(): string
public function setPath(string $path): self
public function getOffset(): int
public function setOffset(int $offset): self
SplConfig (SplFileObject Configuration)
Configuration class for SplFileObject-based operations.
use CsvToolkit\Configs\SplConfig;
Provides the same basic CSV configuration methods as CsvConfig, but without advanced features like encoding or BOM handling.
Helper Classes
ExtensionHelper
Utility class for checking extension availability and capabilities.
use CsvToolkit\Helpers\ExtensionHelper;
Static Methods
isFastCsvLoaded()
public static function isFastCsvLoaded(): bool
Checks if the FastCSV extension is loaded.
getBestImplementation()
public static function getBestImplementation(): string
Determines the best available CSV implementation (‘fastcsv’ or ‘spl’).
getFastCsvInfo()
public static function getFastCsvInfo(): array
Gets detailed information about the FastCSV extension.
Returns:
[
'loaded' => bool,
'version' => string|null,
'available_classes' => array<string>
]
getExtensionInfo()
public static function getExtensionInfo(): array
Gets information about all available CSV extensions.
Enums
Encoding
Enumeration for supported character encodings.
use CsvToolkit\Enums\Encoding;
Values
Encoding::UTF8- UTF-8 encoding (default)Encoding::UTF16- UTF-16 encodingEncoding::UTF16LE- UTF-16 Little EndianEncoding::UTF16BE- UTF-16 Big EndianEncoding::LATIN1- ISO-8859-1 encodingEncoding::ASCII- ASCII encoding
Exception Classes
FileNotFoundException
use CsvToolkit\Exceptions\FileNotFoundException;
Thrown when a specified CSV file cannot be found.
FileNotReadableException
use CsvToolkit\Exceptions\FileNotReadableException;
Thrown when a CSV file exists but cannot be read due to permissions.
FileNotWritableException
use CsvToolkit\Exceptions\FileNotWritableException;
Thrown when a CSV file cannot be written to due to permissions or disk space.
EmptyFileException
use CsvToolkit\Exceptions\EmptyFileException;
Thrown when attempting to read from an empty CSV file.
CsvReaderException
use CsvToolkit\Exceptions\CsvReaderException;
General exception for CSV reading errors.
CsvWriterException
use CsvToolkit\Exceptions\CsvWriterException;
General exception for CSV writing errors.
DirectoryNotFoundException
use CsvToolkit\Exceptions\DirectoryNotFoundException;
Thrown when attempting to write to a non-existent directory.
InvalidConfigurationException
use CsvToolkit\Exceptions\InvalidConfigurationException;
Thrown when invalid configuration options are provided.
Usage Examples
Basic Reading
use CsvToolkit\Factories\ReaderFactory;
$reader = ReaderFactory::create('data.csv');
while (($record = $reader->nextRecord()) !== false) {
print_r($record);
}
Advanced Configuration
use CsvToolkit\Factories\ReaderFactory;
use CsvToolkit\Configs\CsvConfig;
use CsvToolkit\Enums\Encoding;
$config = new CsvConfig();
$config->setDelimiter(';')
->setEnclosure('"')
->setEncoding(Encoding::UTF16)
->setHasHeader(true)
->setStrictMode(true)
->setTrimFields(true);
$reader = ReaderFactory::create('data.csv', $config);
Bulk Writing with Performance Optimization
use CsvToolkit\Factories\WriterFactory;
use CsvToolkit\Configs\CsvConfig;
$config = new CsvConfig();
$config->setAutoFlush(false); // Better performance for bulk operations
$writer = WriterFactory::create('output.csv', $config);
// Write many records
for ($i = 0; $i < 10000; $i++) {
$writer->write(["Record $i", "data$i@example.com"]);
// Flush periodically
if ($i % 1000 === 0) {
$writer->flush();
}
}
$writer->flush(); // Final flush
$writer->close();
Error Handling
use CsvToolkit\Factories\ReaderFactory;
use CsvToolkit\Exceptions\FileNotFoundException;
use CsvToolkit\Exceptions\CsvReaderException;
try {
$reader = ReaderFactory::create('data.csv');
while (($record = $reader->nextRecord()) !== false) {
// Process record
}
} catch (FileNotFoundException $e) {
echo "File not found: " . $e->getMessage();
} catch (CsvReaderException $e) {
echo "CSV error: " . $e->getMessage();
}