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

Field Types Bundle Laravel Package

xrow/field-types-bundle

xrow/field-types-bundle offers reusable field type definitions for PHP applications, helping developers register and manage custom fields with less boilerplate. Adoption and documentation are limited, so evaluate fit carefully before use.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

The package name and structure (*Bundle, Composer-installed, service-container registration) identify this as a Symfony bundle, not a Laravel package. The brief frames the evaluation around a Laravel/PHP stack; on that basis the architectural fit is effectively nil. Laravel has no bundle/kernel-extension model, so adopting this would mean either standing up a Symfony kernel alongside Laravel or hand-porting the field-type definitions into Eloquent casts — at which point you are not using the package, you are reimplementing it.

Reading the description literally — "Fixes custom xrow datatypes of various extensions" — the package is a compatibility shim, not a feature. It exists to repair custom Field Types defined by other xrow extensions in an eZ Platform / Ibexa context. Its value is subtractive (it stops things breaking) and it is only meaningful when co-installed with a specific sibling extension set and a specific legacy content model. A shim with no host application is dead weight.

Integration feasibility

Low, on multiple independent axes:

  • Runtime target. Last release 2017-10-19 places it in the PHP 7.0/7.1 and Symfony 2.8/3.x era. Modern PHP (8.1+) will very likely fail Composer resolution on php and symfony/* constraints before a single line of code runs.
  • Install prerequisites. No documented prerequisites, no tests, no CI badge, no README signal in the metadata supplied. You cannot assess fit without reading the source.
  • Ecosystem signal. 1 star and 0 dependents is not a quality judgement so much as an absence of any validation surface. There is no population of users who have hit and resolved the failure modes you will hit.

Technical risk

High and asymmetric. The downside is not "it doesn't work" — that is cheap to discover — it is "it works, you depend on it, and then you cannot upgrade PHP for two years."

  • Abandonment. Eight years without a release with no stated EOL. Assume no upstream fixes, ever.
  • Security posture. Field-type code parses and persists content-attribute values. That is an input-handling surface that has had no patches for eight years and no disclosure process.
  • Transitive rot. Its own dependencies will have drifted; you inherit the pinning problem.
  • Licensing. Verify the licence file before any commercial use — metadata does not state it.
  • Single-vendor provenance. Authored by an agency for its own extension set. It was never generalised for third-party consumption.

Key questions

  1. Which specific xrow extensions and datatypes does this repair, and do we actually run any of them?
  2. Is the fix confined to a handful of classes, or does it include Doctrine schema/migration behaviour?
  3. Is our target an eZ Platform/Ibexa stack at all, or is this evaluation driven by a name-match against a Laravel brief?
  4. Do we still have the legacy custom datatypes in our content model, or is this an artefact of a migration already completed?
  5. Is the source maintainable in-house — test coverage, code volume, static analysis cleanliness?
  6. What is the exit cost: if we remove the bundle, what happens to the persisted attribute rows?

Integration Approach

Stack fit

Target stack Fit Verdict
Laravel (any version) None Do not adopt. Reimplement the field semantics as Eloquent casts / JSON columns if the data model is genuinely needed.
Symfony 2.8/3.x + eZ Platform 1.x/2.x Marginal Only viable path, and only if you already run the sibling xrow extensions.
Modern Symfony 6/7 + Ibexa 4.x None as-is Requires a port, not an install.
Standalone PHP library use None Bundle-coupled; no framework-agnostic core to extract.

Migration path

Do not composer require this into a production application. The only defensible paths, in order of preference:

  1. Eliminate the need. If the custom datatypes are legacy artefacts, migrate the content to native field types and retire the dependency entirely. This is the only path with a clean end state.
  2. Vendor the relevant classes. Identify the specific fixes this bundle applies (likely a small number of classes or service definitions) and inline them into an in-house bundle you own, with attribution and licence compliance.
  3. Fork and modernise. Take a hard fork into a private repository, add a composer.json with unpinned modern constraints, add tests around the field-type conversion paths, and treat it as first-party code from day one.

Compatibility

Any fork will need, at minimum: PHP 8 composer.json constraint widening, Symfony service-definition and event-dispatcher API updates, Doctrine DBAL API migration for any schema-touching code, and return-type/deprecation cleanup. Budget this as a port, not a patch — the effort scales with how much of the bundle touches persistence.

Sequencing

  1. Inventory the datatypes and extensions actually in play; confirm the bundle is load-bearing.
  2. Sandbox proof in an isolated environment on the pinned legacy stack — establish what it actually fixes before committing to it.
  3. Fork and vendor into a private repo with tests and a named internal owner.
  4. Port to the current PHP/Symfony baseline behind a feature flag.
  5. Retire — plan removal as part of the content-model modernisation backlog, with a data-migration story for existing rows.

Steps 4 and 5 should be scoped together; a fork with no retirement plan is a permanent liability.

Operational Impact

Maintenance

You own this on install. There is no upstream to file issues against and no release cadence to track. Realistic ongoing cost: a small but permanent allocation for PHP/Symfony upgrade churn, plus the cognitive load of a dependency that no one on the team wrote. Assign a named owner in the repository's CODEOWNERS before merging anything.

Support

Effectively none. No vendor SLA, no community, no dependents to consult, no Stack Overflow corpus. Internal support model only: whoever forks it is the escalation path. Factor this into on-call expectations — a field-type regression surfaces as content authoring failures or, worse, silently wrong attribute values.

Scaling

Runtime cost is negligible; this is thin glue code, not a hot path. The scaling risk is structural: the bundle couples you to a specific content-model shape and a specific ORM mapping. That coupling is what blocks horizontal re-platforming, makes read-replica or storage-engine changes expensive, and forces whole-application upgrades to be atomic rather than incremental. Do not size this as a performance question — size it as an architectural lock-in question.

Failure modes

  • Composer resolution failure on any PHP or Symfony bump — loud, early, cheap.
  • Silent data regression after a content-model or extension change — quiet, late, expensive. This is the one that matters.
  • Fatal errors on PHP upgrade from removed/deprecated APIs in unmaintained code.
  • Orphaned attribute data on removal of the bundle with no migration path.
  • Security exposure in value parsing/serialisation with no patch channel.
  • Bus-factor collapse if the one person who understands the custom datatypes leaves.

Ramp-up

Learning the bundle itself is measured in hours — the code volume is small and its scope is narrow. The real ramp-up cost is the surrounding eZ Platform/Ibexa content model, the legacy datatype semantics, and the migration history that made these custom types necessary in the first place. Budget days-to-weeks for that context, not hours, and do not let the package's apparent simplicity mask it. New engineers will read this code as authoritative when it is in fact a workaround; annotate it accordingly.

Recommendation: Do not adopt as a net-new dependency. If the underlying datatype problem is real for your organisation, fund the fork-and-vendor path (option 2) with retirement sequenced alongside it. If the evaluation was driven by a Laravel delivery brief, close it out — the stack mismatch alone disqualifies it.

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.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels