dayvsonspacca/psl-toml

A TOML parser for PHP built on top of azjezz/psl

Maintainers

Package info

github.com/dayvsonspacca/psl-toml

pkg:composer/dayvsonspacca/psl-toml

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.3 2026-03-04 14:16 UTC

This package is auto-updated.

Last update: 2026-03-04 14:52:08 UTC


README

Latest Stable Version Total Downloads License

A TOML 1.1 parser for PHP 8.4+ built on top of azjezz/psl.

Requirements

Installation

composer require dayvsonspacca/psl-toml

Usage

Parsing a string

use PslToml\Toml;
use Psl\Result\Success;
use Psl\Type;

$result = Toml::parse(<<<TOML
    name    = "Alice"
    version = 1

    [database]
    host = "localhost"
    port = 5432
TOML);

if ($result instanceof Success) {
    $doc = $result->getResult();

    $doc->get('name', Type\string())->unwrap();         // "Alice"
    $doc->get('database.port', Type\int())->unwrap();   // 5432
}

Loading a file

use PslToml\Toml;
use Psl\Result\Success;
use Psl\Type;

$result = Toml::load('/path/to/config.toml');

if ($result instanceof Success) {
    $doc = $result->getResult();
}

Working with the Document

// Check if a key exists
$doc->has('database.host'); // true

// Get a nested table as a Document
$db = $doc->table('database')->unwrap();
$db->get('host', Type\string())->unwrap(); // "localhost"

// List top-level keys
$doc->keys(); // ['name', 'version', 'database']

// Export to a plain PHP array
$doc->toArray();

Result API

Both Toml::parse() and Toml::load() return a Psl\Result\ResultInterface<Document>, so you never need a try/catch:

use Psl\Result\Success;
use Psl\Result\Failure;

$result = Toml::parse($source);

if ($result instanceof Failure) {
    $error = $result->getThrowable(); // ParseException with position info
}

License

MIT — see LICENSE.