Práce s formátem NEON

NEON je snadno čitelný formát pro serializaci dat. Vyzkoušejte jej v sandboxu.

Je podobný YAMLu. Hlavní rozdíl je v tom, že NEON podporuje „entity“ (takže jej můžeme použít např. ke konfiguraci DI). K odsazování můžeme použít jak mezery, tak tabulátory. Syntaxe NEONu je v porovnání s YAMLem jednodušší a parsování je rychlejší.

Převod do NEONu a zpět

Nette\Neon\Neon je statická třída, obsahující užitečné funkce pro práci s NEONem. Ošetřuje chyby různých verzí PHP a při chybě vyhazuje výjimky.

Všechny příklady předpokládají vytvořený alias:

use Nette\Neon\Neon;

encode(mixed $value, int $flags=0): string

Vrací $value převedenou do NEONu. Jako druhý parametr můžeme použít Neon::BLOCK, který vytvoří víceřádkový výstup.

Neon::encode($value); // Vrátí $value převedenou do NEONu
Neon::encode($value, Neon::BLOCK); // Vrátí $value převedenou do víceřádkového NEONu

Metoda encode() při chybě vyhodí Nette\Neon\Exception.

try {
	$neon = Neon::encode($value);
} catch (Nette\Neon\Exception $e) {
	// zpracování výjimky
}

decode(string $neon): mixed

Převede vstup z NEONu do PHP.

Neon::decode('hello: world'); // Vrátí pole ['hello' => 'world']

Metoda decode() při chybě vyhodí Nette\Neon\Exception.

try {
	$value = Neon::decode($neon);
} catch (Nette\Neon\Exception $e) {
	// zpracování výjimky
}

Viz také NEON for JavaScript a NEON for Python.

Integrace do IDE

  • NetBeans (má vestavěnou podporu)
  • PhpStorm (plugin)
  • Visual Studio Code (plugin)
  • Sublime Text 3 (plugin)
  • Sublime Text 2 (plugin)

Syntaxe

NEON je nadmnožinou JSONu. Každý JSON se dá zparsovat jako NEON:

{
"php": {
	"date.timezone": "Europe\/Prague",
	"zlib.output_compression": true
},
"database": {
	"driver": "mysql",
	"username": "root",
	"password": "beruska92"
},
"users": [
	"Dave", "Kryten", "Rimmer"
]
}

Co kdybychom vynechali uvozovky?

{
php: {
	date.timezone: Europe/Prague,
	zlib.output_compression: true
},
database: {
	driver: mysql,
	username: root,
	password: beruska92
},
users: [
	Dave, Kryten, Rimmer
]
}

A složené závorky a čárky?

php:
	date.timezone: Europe/Prague
	zlib.output_compression: true

database:
	driver: mysql
	username: root
	password: beruska92

users: [
	Dave, Kryten, Rimmer
]

Nejsou seznamy s odrážkami lépe čitelné?

php:
	date.timezone: Europe/Prague
	zlib.output_compression: true

database:
	driver: mysql
	username: root
	password: beruska92

users:
	- Dave
	- Kryten
	- Rimmer

Přidáme komentáře?

# my web application config

php:
	date.timezone: Europe/Prague
	zlib.output_compression: true  # use gzip

database:
	driver: mysql
	username: root
	password: beruska92

users:
	- Dave
	- Kryten
	- Rimmer

Hurá, teď znáte syntaxi NEONu!