Package

Yosymfony Toml

A PHP parser for TOML compatible with specification 0.4.0

Package

yosymfony/toml

View on GitHub →

TOML parser for PHP

A PHP parser for TOML compatible with TOML v0.4.0.

Support:

Installation

Requires PHP >= 7.1.

Use Composer to install this package:

composer require yosymfony/toml

Usage

You can parse an inline TOML string or from a file:

To parse an inline TOML string:

use Yosymfony\Toml\Toml;
 
$array = Toml::Parse('key = [1,2,3]');
 
print_r($array);

To parse a TOML file:

$array = Toml::ParseFile('example.toml');
 
print_r($array);

Additionally, methods parse and parseFile accept a second argument called resultAsObject to return the result as an object based on stdClass.

$object = Toml::Parse('key = [1,2,3]', true);

TomlBuilder

You can create a TOML string with TomlBuilder. TomlBuilder uses a fluent interface for more readable code:

use Yosymfony\Toml\TomlBuilder;
 
$tb = new TomlBuilder();
 
$result = $tb->addComment('Toml file')
->addTable('data.string')
->addValue('name', "Toml", 'This is your name')
->addValue('newline', "This string has a \n new line character.")
->addValue('winPath', "C:\\Users\\nodejs\\templates")
->addValue('literal', '@<\i\c*\s*>') // literals starts with '@'.
->addValue('unicode', 'unicode character: ' . json_decode('"\u03B4"'))
 
->addTable('data.bool')
->addValue('t', true)
->addValue('f', false)
 
->addTable('data.integer')
->addValue('positive', 25, 'Comment inline.')
->addValue('negative', -25)
 
->addTable('data.float')
->addValue('positive', 25.25)
->addValue('negative', -25.25)
 
->addTable('data.datetime')
->addValue('datetime', new \Datetime())
 
->addComment('Related to arrays')
 
->addTable('data.array')
->addValue('simple', array(1,2,3))
->addValue('multiple', array(
array(1,2),
array('abc', 'def'),
array(1.1, 1.2),
array(true, false),
array( new \Datetime()) ))
 
->addComment('Array of tables')
 
->addArrayOfTable('fruit') // Row
->addValue('name', 'apple')
->addArrayOfTable('fruit.variety')
->addValue('name', 'red delicious')
->addArrayOfTable('fruit.variety')
->addValue('name', 'granny smith')
->addArrayOfTable('fruit') // Row
->addValue('name', 'banana')
->addArrayOfTable('fruit.variety')
->addValue('name', 'plantain')
->getTomlString(); // Generate the TOML string

The result:

#Toml file
 
[data.string]
name = "Toml" #This is your name
newline = "This string has a \n new line character."
winPath = "C:\\Users\\nodejs\\templates"
literal = '<\i\c*\s*>'
unicode = "unicode character: δ"
 
[data.bool]
t = true
f = false
 
[data.integer]
positive = 25 #Comment inline.
negative = -25
 
[data.float]
positive = 25.25
negative = -25.25
 
[data.datetime]
datetime = 2013-06-10T21:12:48Z
 
#Related to arrays
 
[data.array]
simple = [1, 2, 3]
multiple = [[1, 2], ["abc", "def"], [1.1, 1.2], [true, false], [2013-06-10T21:12:48Z]]
 
# Array of tables
 
[[fruit]]
name = "apple"
 
[[fruit.variety]]
name = "red delicious"
 
[[fruit.variety]]
name = "granny smith"
 
[[fruit]]
name = "banana"
 
[[fruit.variety]]
name = "plantain"
Limitations

The TomlBuilder class is an utility to get Toml strings that has the following limitations:

  • Only admits basic strings and literal strings.

Deprecated method

The following method will be eliminated in version 2.0.0

  • [TomlBuilder] addArrayTables

Contributing

When Contributing code to this library, you must follow its coding standards. Toml follows PSR-2 coding style. To ensure the CS, you can use the CLI tool PHP-CS-Fixer.

Unit tests

You can run the unit tests with the following command:

$ cd toml
$ composer test

License

This library is open-sourced software licensed under the MIT license.

Yosymfony Toml Related Articles

Lambo CLI for Quick Application Creation With Laravel and Valet image

Lambo CLI for Quick Application Creation With Laravel and Valet

Read article
API Platform for Laravel image

API Platform for Laravel

Read article
Laravel Telescope Dev Toolbar image

Laravel Telescope Dev Toolbar

Read article
Symfony AI Components image

Symfony AI Components

Read article
Envault, a secure .env sharing tool for your team, just launched v2 image

Envault, a secure .env sharing tool for your team, just launched v2

Read article
Lerd: A Free, Open Source Herd Alternative for Linux and macOS image

Lerd: A Free, Open Source Herd Alternative for Linux and macOS

Read article

Pushsilver

Pushsilver is simple invoicing for freelancers and small studios — send polished invoices, automate reminders, and get paid on time without the bloat.

Pushsilver

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech

PhpStorm

The go-to PHP IDE with extensive out-of-the-box support for Laravel and its ecosystem.

PhpStorm

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift