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

Ezobjectwrapperbundle Laravel Package

kaliop/ezobjectwrapperbundle

Kaliop eZObjectWrapperBundle provides a lightweight object wrapper for eZ Publish/Platform content in Symfony applications. It enables lazy loading and simpler access to content fields, attributes, and relations, helping developers integrate legacy eZ content into cleaner templates and controllers.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. kaliop/ezobjectwrapperbundle is a Symfony bundle that layers a typed wrapper/view-model abstraction over eZ Publish 5 / eZ Platform content objects. The core value proposition is sound and well-understood: the eZ Public API returns generic Content, ContentInfo, and Field value objects, which makes domain code verbose and stringly-typed ($content->getFieldValue('title')->text). The bundle lets teams define wrapper classes that resolve content once and expose intent-revealing accessors, with DI wiring and lazy field hydration. For a team that already owns an eZ-based application and is drowning in field-access boilerplate, this is the right shape of solution.

The problem is temporal. This bundle targets eZ Publish 5.x and early eZ Platform (Symfony 2.8/3.x, PHP 5.6/7.0). The last tagged release is November 2017. eZ Platform has since become Ibexa DXP, moving through Symfony 4/5, PHP 7.4/8.x, and multiple breaking Public API revisions. Nothing about the bundle's dependency constraints will resolve cleanly against a current Ibexa install.

Integration feasibility. Low for any greenfield or currently-supported platform; moderate only if you are pinned to an inherited legacy eZ Publish 5 deployment. It is a Composer package, so mechanically it installs, but constraint solving against modern ezsystems/* or ibexa/* packages will fail or force unpalatable downgrades. There is no compatibility shim, no maintained branch, and no CI signal beyond a 2017 tag.

Technical risk.

  • Abandonment risk: high. 9 stars, 0 dependents, no release in ~8 years. Effectively a single-vendor artifact with no successor maintainer.
  • Licensing risk: material. GPL-2.0 is a strong copyleft. Internal, non-distributed use is generally tolerable, but embedding it in a product you ship or a distributed appliance needs legal review. This alone often disqualifies it in commercial contexts.
  • Upgrade risk: high. Annotation- and convention-driven bundles are the most brittle category during framework majors (annotation reader removal, container compilation changes, autoloading changes).
  • Security risk: unassessed. No security process, no disclosure channel, no patch cadence.

Key questions.

  1. Which platform generation is actually in scope — eZ Publish 5 legacy, eZ Platform 1.x/2.x, or Ibexa DXP 4.x? The answer likely ends the evaluation.
  2. Has the Ibexa native view layer (content views, view models, and typed controllers) already closed the gap this bundle was built to fill?
  3. Is the consuming application distributed to third parties, triggering the GPL-2.0 obligation?
  4. If the pattern is valuable, is a fork-and-port cheaper than a 200-line internal adapter?
  5. Are there enough wrapper classes in the existing codebase to justify a framework, or is this a handful of DTOs?

Verdict: treat as a design reference, not a dependency. The pattern is worth copying; the package is not worth adopting.

Integration Approach

Stack fit. The bundle assumes a Symfony application running eZ's kernel, with the eZ content repository services available in the container. That fits an eZ-native app and fits a nothing else — there is no standalone mode, no framework-agnostic adapter, and no path to a headless or non-eZ consumer.

Migration path.

  • Legacy eZ Publish 5 / early eZ Platform: pin the version, quarantine it behind your own interfaces, and plan an exit before the next platform upgrade. Do not let wrapper classes leak into controllers or templates; keep a repository/service boundary so the bundle can be swapped.
  • Modern Ibexa: do not attempt a straight install. Either (a) fork, bump constraints to current Symfony/PHP, replace removed APIs, add a CI matrix, and accept permanent self-maintenance; or (b) reimplement the concept internally as thin DTOs plus a small factory service — typically a few days of work, zero license surface, and no abandoned dependency.
  • Any other stack: out of scope.

Compatibility. Expect breakage across three axes simultaneously: framework version, eZ/Ibexa Public API version, and PHP runtime. Annotation-driven configuration is the highest-friction axis because modern Symfony has moved decisively away from runtime annotation reading. Budget for a real port, not a constraint bump.

Sequencing.

  1. Spike (1–2 days): attempt install against the actual target platform; capture the constraint failures verbatim. This resolves the go/no-go faster than any document review.
  2. Pattern extraction (1 day): read the wrapper resolution and lazy-loading code; document the mechanism so it can be rebuilt internally if the spike fails.
  3. Decision gate: fork vs. reimplement vs. drop. Default to reimplement — the public API surface is small and the maintenance burden of a fork is permanent.
  4. Pilot: introduce in one bounded module behind internal interfaces; measure boilerplate actually removed.
  5. Rollout or rollback: expand only if the pilot shows a measurable reduction in field-access code and no N+1 regressions.

Operational Impact

Maintenance. Effectively zero upstream. There is no maintainer, no issue triage, no release cadence. Every future platform upgrade becomes your team's problem. The true cost of adoption is not the install — it is ownership of a GPL-2.0 codebase you did not write and cannot get fixed.

Support. Community-only in theory, nonexistent in practice at 9 stars and 0 dependents. No vendor, no paid support tier, no Stack Overflow corpus. Ramp-up relies entirely on reading source and docblocks, which is feasible here only because the API surface is small.

Scaling. Wrappers themselves are lightweight — the risk is behavioral, not computational. The lazy-hydration design can mask repository calls: a loop over wrappers that each touch an unprimed field can generate per-content loads and produce N+1 query patterns that are invisible in code review and obvious only in profiling. Instrument early, prefer batch-loading content up front, and assert on query counts in integration tests.

Failure modes.

  • Silent upgrade breakage: annotation/config parsing changes surface at container compile time with opaque errors, often only in production builds.
  • Partial resolution: wrappers returned with unhydrated or null fields rather than throwing, pushing failures downstream into templates.
  • Autoload/cache staleness: wrapper discovery cached in the container; stale caches after deploys cause "class not found" or wrong-wrapper behavior.
  • Dependency deadlock: an unpatchable CVE in a transitive dependency with no upgrade path that preserves bundle compatibility.
  • License exposure: GPL-2.0 obligations discovered late in a distribution or M&A review.

Ramp-up. Low for the concept (a day for a Symfony-fluent engineer to read the source and understand the resolution model), but the absence of usable documentation means knowledge concentrates in whoever did the reading. Mitigate by writing internal docs and constraining usage behind your own interfaces from day one.

Overall. Score of ~1.8/10 is consistent with the evidence: a coherent pattern trapped in an abandoned, copyleft, single-target package. Recommend extracting the idea and building a small internal equivalent rather than taking the dependency.

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.
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment