Polyscope - The agent-first dev environment for Laravel

Toml

yosymfony/toml image

Toml stats

Downloads
760.9K
Stars
181
Open Issues
5
Forks
27

View on GitHub →

A PHP parser for TOML compatible with specification 0.4.0

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.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Yosymfony Toml Related Articles

PHPverse 2026 Returns June 9th image

PHPverse 2026 Returns June 9th

Read article
PAO: Agent-Optimized Output for PHP Testing Tools image

PAO: Agent-Optimized Output for PHP Testing Tools

Read article
Measure Lines of Code and PHP Features Used image

Measure Lines of Code and PHP Features Used

Read article
PHP SDK for Anthropic Claude image

PHP SDK for Anthropic Claude

Read article
PrettyPHP is an opinionated code formatter for PHP image

PrettyPHP is an opinionated code formatter for PHP

Read article
An Official PHP SDK for MCP Announced image

An Official PHP SDK for MCP Announced

Read article
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search
Acquaint Softtech logo

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