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á podporu vestavěnou, pro PhpStom existuje NEON plugin a pro Visual Studio Code taktéž.

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: yes  # use gzip

database:
    driver: mysql
    username: root
    password: beruska92

users:
    - Dave
    - Kryten
    - Rimmer

Hurá, teď znáte syntaxi NEONu!