Document loading

Because CSV documents come in different forms we use named constructors to offer several ways to load them.

Since version 9.1.0 non-seekable CSV documents can be used but exceptions will be thrown if features requiring a seekable CSV document are used.

Loading from a string

public static AbstractCsv::createFromString(string $content = ''): self

Creates a new object from a given string.

use League\Csv\Reader;
use League\Csv\Writer;

$reader = Reader::createFromString('john,doe,john.doe@example.com');
$writer = Writer::createFromString('john,doe,john.doe@example.com');

Since version 9.2.0 the $content argument default value is an empty string to ease usage.

Loading from a file path

public static AbstractCsv::createFromPath(
    string $path,
    string $open_mode = 'r+',
    resource $context = null
): self

Creates a new object à la fopen.

use League\Csv\Reader;
use League\Csv\Writer;

$reader = Reader::createFromPath('/path/to/your/csv/file.csv', 'r');
$writer = Writer::createFromPath('/path/to/your/csv/file.csv', 'w');
Starting with version 9.1.0, $open_mode defaults to:
  • r+ for the Writer class
  • r for the Reader class

Loading from a resource stream

public static AbstractCsv::createFromStream(resource $stream): self

Creates a new object from a stream resource.

use League\Csv\Reader;
use League\Csv\Writer;

$reader = Reader::createFromStream(fopen('/path/to/the/file.csv', 'r+'));
$writer = Writer::createFromStream(tmpfile());

Prior to version 9.1.0, the method would throw a League\Csv\Exception for a non-seekable stream resource.

Loading from a SplFileObject object

public static AbstractCsv::createFromFileObject(SplFileObject $file): self

Creates a new object from a SplFileObject object.

use League\Csv\Reader;
use League\Csv\Writer;

$reader = Reader::createFromFileObject(new SplFileObject('/path/to/your/csv/file.csv'));
$writer = Writer::createFromFileObject(new SplTempFileObject());

Accessing the CSV document path

New in version 9.2.0

public AbstractCsv::getPathname(): string

Once instantiated, the getPathname method returns the pathname of the underlying document.

use League\Csv\Reader;
use League\Csv\Writer;

Reader::createFromFileObject(new SplFileObject('/path/to/your/csv/file.csv'))->getPathname();
//returns '/path/to/your/csv/file.csv'
Writer::createFromFileObject(new SplTempFileObject())->getPathname();
//returns php://temp