Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Data Laravel Package

jbzoo/data

JBZoo Data is a lightweight PHP library that wraps arrays and objects in a convenient Data class. Access nested values with dot notation, convert between formats, and simplify configuration, JSON, and request data handling in any PHP project.

Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on the config abstraction layer. This package is a pre-built answer to "how do we read, merge, override, validate, and re-serialize configuration?" Adopting it removes a common piece of bespoke plumbing from the backlog — typically a few days of engineering plus the ongoing cost of every team re-solving dot-notation access, defaulting, and format conversion differently.
  • Standardizing config handling across modules/services. If multiple packages, CLI tools, or Laravel modules currently each parse arrays differently, this gives one shared collection contract (array access, dot paths, validation, conversion to JSON/YAML/INI/PHP). That's a consistency decision, not just a library choice.
  • Scoping the "config as a product surface" roadmap item. Whether config gets treated as a first-class concern (validated schema, layered sources, safe serialization for ops/export) or stays as loose PHP arrays. This package sits at the low end of that ambition — cheap to introduce, and a reasonable stepping stone.
  • Multi-source config merging. Layering defaults, environment overrides, and per-tenant or per-plugin settings is a recurring feature request in Laravel apps and CMS/plugin ecosystems. An ArrayObject-based collection makes that layering explicit and testable.
  • Format interchange as a feature, not a chore. Exporting or importing config as JSON/YAML/INI shows up in admin "export settings" flows, CLI tooling, fixtures, and integration contracts with partners. This makes that near-free.
  • Use cases worth trialing first: plugin/module config in a CMS-style codebase, CLI tool settings, test fixture builders, normalizing third-party API payloads, and migration scripts that transform legacy config formats.
  • Dependency policy signal. MIT license, one small focused package, recent release (2026-07-20). Low legal/procurement friction — the decision is engineering risk, not licensing risk.

When to Consider This Package

Consider it when:

  • You are on PHP/Laravel and have a genuine multi-source or multi-format config problem — not just config('app.foo').
  • You want ArrayObject semantics (object-oriented access, iteration, count, serialization) plus dot-path reads/writes and validation in one small dependency.
  • You're building or maintaining a package/plugin that must not depend on Laravel's full config stack.
  • Your team already sits in the JBZoo ecosystem, or you're evaluating their broader toolset and want ecosystem coherence.
  • Config validation and format conversion are required but not central enough to justify Symfony Config's learning curve and wiring.

Look elsewhere when:

  • You want Laravel-native config. Use config(), ConfigRepository, and phpdotenv. Introducing a parallel config abstraction in a standard Laravel app creates two sources of truth — a maintenance tax with no user-visible payoff.
  • You need schema-validated, strongly typed config. Symfony Config (with a tree builder) or DTO-based approaches (spatie/laravel-data, plain readonly classes + a validator) give compile-time-ish guarantees this does not.
  • You need 12-factor / secrets management. This is a data structure, not a config loader — vault, SSM, environment precedence, and hot reload are out of scope.
  • Governance blocks low-adoption dependencies. 86 stars and an unknown/opaque repository is a real signal. If your policy requires active maintainer breadth, published security posture, or a known CVE process, this fails before evaluation. Expect a bus-factor of roughly one.
  • You need performance-critical config in hot paths. ArrayObject carries overhead versus plain arrays; benchmark before putting it on a request-critical path.

Due diligence before adoption: confirm the repository/homepage actually resolves, verify the release cadence against real commit history (a 2026-07-20 release date should be corroborated by tags and changelog), and check whether an internal fork is needed for long-term safety.

How to Pitch It (Stakeholders)

To executives (one paragraph): Config handling is invisible until it breaks — a bad override or an unvalidated setting becomes an incident. We can either keep solving this per-feature or adopt a small, MIT-licensed, single-purpose library that standardizes how we read, validate, and export configuration. It's a low-cost, easily reversible decision: it removes recurring engineering effort without touching our architecture or licensing position. The main caveat is maintainer concentration, which we mitigate by pinning versions and keeping the abstraction thin enough to swap.

To engineering (the substance):

  • What it is: an extended ArrayObject — a config collection with array/object access, dot-path get/set, validation, and conversion to JSON/YAML/INI/PHP arrays.
  • What it isn't: a config loader, env-var resolver, DI container, or schema validator. It's a data structure, not a framework.
  • Why we'd take it: small surface area, MIT, recent release, and it fills a real gap between raw arrays and over-engineered config components in package/plugin code.
  • The honest risks: 86 stars means limited community validation and effectively single-maintainer support; unknown repository provenance needs verification. Mitigations: vendor it, wrap it behind a one-file internal interface, pin the version, and write a swap-out note. Because the API surface we'd use is narrow, replacement cost stays low.
  • Where we won't use it: Laravel's native config layer, or anything requiring typed schemas or secrets handling.
  • The ask: a time-boxed spike in one non-critical module, with a go/no-go on (a) repo provenance, (b) performance versus plain arrays, (c) how much of the API we actually need.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource