divineomega/array_undot
array_undot expands dot-notation keys back into nested PHP arrays, the inverse of Laravel’s array_dot helper. Turn ['user.name' => 'Jane'] into ['user' => ['name' => 'Jane']] for configs, form data, and validation. Lightweight with a simple API.
Arr::undot()" — meaning the real product decision is not adopting this package, and documenting the native path in our engineering standards instead.checkout.v2.enabled, pricing.tiers.pro) must be expanded before merging into app config. This supports roadmap items around progressive delivery without introducing a config service.Consider it only when all of the following hold:
Arr::undot PHP codebase, or we deliberately want a framework-agnostic utility shared with a non-Laravel service.Look elsewhere — or simply write the ~10-line helper — when:
Arr::undot() is native, maintained by the framework, and removes the dependency entirely. This is the default case and should be the documented recommendation.user and user.name both exist), numeric-key handling for lists, or guaranteed behavior for empty segments and malformed keys. The package is small and unopinionated; these become our bugs.Given the above, my recommendation is a one-time engineering decision record: use Arr::undot() where Laravel is present, vendor a small internal helper otherwise, and treat this package as a useful reference implementation rather than a dependency.
For executives: This is a micro-utility that converts flat "dotted" key-value data into nested configuration arrays. It is not a product capability and carries no direct revenue impact. The relevant decision is a small one: whether to add a third-party dependency or use functionality Laravel already ships. I recommend the latter, which means no new dependency, no license review, no added maintenance surface — the package serves mainly as a validated reference for a helper we can implement internally in a few lines if a non-Laravel service ever needs it.
For engineering: array_undot is the inverse of array_dot and does exactly one thing, with no casting or validation. If you're on Laravel, Arr::undot() is equivalent and already in the framework — prefer it. Adopt this package only for framework-agnostic contexts or legacy PHP services, and if you do, pin the version, confirm LGPL-3.0 with legal, and write contract tests for the edge cases the package doesn't specify (key collisions, numeric segments, empty segments). Do not let it spread as a transitive convenience dependency; keep the call sites behind a single internal adapter so we can swap it for the native helper later at zero cost.
How can I help you explore Laravel packages today?