nette/neon
NEON is a human-friendly, YAML-like data serialization format used for Nette configuration files. This package provides a fast, strict parser and dumper for PHP, with support for comments, inheritance, entities and includes, plus detailed error reporting.
decodeFile(), UTF-8 handling, and PHP 8.4/8.5/8.6 support. Building equivalent parsing, linting, and edge-case handling would be expensive and low-differentiation.2024-02-30, 2024-13-01) decode as plain strings instead of erroring. If a product imports third-party NEON, decide explicitly whether malformed dates should be silently tolerated as strings or rejected in validation — this affects import UX and downstream date parsing.!!chain entity name), plus NOASSERTION licensing, are product risks to price into any roadmap that depends on NEON.NOASSERTION in the provided metadata despite common assumptions about Nette’s licensing. Do not ship it into a commercial product without clarifying terms.!!chain for chained entities (no longer writable in input) and changes decoding of invalid date-shaped literals to plain strings. Neither is a major-version bump, so pin versions and test NEON fixtures on upgrade if your inputs contain !!chain or date-like values.config:cache integration, and no service-container integration. PHP arrays, JSON, or YAML are simpler and better supported.For executives: “NEON is not a Laravel-native config format, so this is a scoped interoperability and tooling decision, not a platform rewrite. The package is mature and actively maintained — v3.4.9 adds PHP 8.6 support and tightens parsing edge cases — but it carries licensing ambiguity and minor-version BC risk. I recommend adopting it only where NEON is already required — Nette migrations, internal tooling, or config import/export — with legal review and a named owner for the Laravel adapter.”
For engineering: “Use nette/neon as a focused encoder/decoder and linter, not as a replacement for Laravel’s config system. It gives us a maintained AST parser, atomic file reads, UTF-8 handling, multiline strings, and PHP 8.6 support. v3.4.9 also makes invalid date-shaped literals decode as strings and reserves the !!chain entity name, so pin the version and re-run NEON fixture tests on upgrade. The cost is integration: we must build and own any Laravel config loader or cache path, and we must test against BC-sensitive releases. Best fit: Nette interop, fixtures, CLI configs, and CI linting.”
For developers: “NEON is more readable than JSON for deeply nested config and supports comments and multiline strings. The package includes a linter and decodeFile(), recent releases improve phpDoc types for IDE/static-analysis support, and v3.4.9 runs on PHP 8.6. Note two behavior changes in that release: things like 2024-02-30 now decode as plain strings rather than failing, and !!chain is reserved so you can’t write it in input. But this is not a drop-in Laravel config format — use it only for scoped cases where the readability or Nette compatibility benefit is concrete.”
How can I help you explore Laravel packages today?