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 Type Bundle Laravel Package

rz/field-type-bundle

rz/field-type-bundle is a PHP package for organizing reusable field type definitions in your applications. It helps centralize field metadata and rendering logic so forms and content models stay consistent, easier to maintain, and simpler to extend as your project grows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — none. rz/field-type-bundle is not a Laravel package; it is a Symfony 2 bundle. Its integration contract is the Symfony full-stack kernel: registration in AppKernel, a DependencyInjection/*Extension.php with a Configuration tree, service definitions in YAML/XML, and consumption of Symfony 2.x components (HttpKernel, DependencyInjection, Form, EventDispatcher). Laravel has no bundle concept — its closest analogue is a ServiceProvider with a deferred register()/boot() lifecycle, which is a different contract with different discovery and config semantics. There is no adapter layer that makes a bundle load in Laravel without reimplementing it.

Integration feasibility — effectively zero as a dependency, low as a fork. Any Laravel version on a supported PHP runtime (8.1+) resolves Symfony ^6/^7 components or none of the full-stack ones. A bundle pinned to Symfony 2.x creates an unresolvable Composer graph; even if forced, the DI container and kernel bootstrapping will not run inside Laravel's Application. The only viable path is source-level reuse: read the code, extract the domain rules, and rebuild them natively.

Technical risk — high and asymmetric. The signal here is the whole signal: archived, 0 stars, 0 dependents, no maintainer. That means no issue triage, no security patching, no upgrade path, and no downstream usage to learn from when something breaks. Concretely, expect:

  • PHP 5.x-era constraints and syntax (each(), dynamic properties, implicit nullable params) that fatal or deprecate on PHP 8.
  • Symfony 2.8 EOL since 2018; 2.3 EOL since 2017. Any transitive component CVE is permanently unpatched.
  • Unknown provenance of the actual logic — "FieldType" bundles commonly mix a field-type registry (benign, trivially portable) with form rendering, persistence mapping, and validation (much costlier to port and much likelier to carry implicit behavior).
  • No test signal, so behavior must be characterized from source rather than verified from a suite.

Key questions to answer before any decision:

  1. What is the actual capability surface — a type registry, rendering, value validation, persistence/serialization, or all four?
  2. Is the domain logic separable from Symfony wiring, or is it interleaved with container lookups and Form events?
  3. What are the symfony/* and php version constraints in composer.json, and what does the license permit?
  4. Is there any stored data contract (a DB column format for field values) that we would inherit and have to migrate?
  5. Is there a maintained upstream or internal fork that superseded this repo, and who owns it?
  6. Does it touch security-sensitive surfaces — deserialization, file uploads, templating with autoescaping disabled, regex/DOM validation?

Assessment: do not adopt. Treat the repository as a reference implementation only.

Integration Approach

Stack fit — no direct fit; conceptual fit is good. The concept (a pluggable field-type registry: each type defines a key, validation rules, normalization, and a renderer) maps cleanly onto idiomatic Laravel:

Symfony 2 bundle concept Laravel equivalent
Bundle + Extension + Configuration tree ServiceProvider + config/field_types.php
Tagged services (kernel.event_listener, custom tags) Container bindings + a FieldTypeRegistry singleton, or a Manager/driver pattern
Form type + Twig block FieldType contract + Blade component / view per type
Form constraints Laravel Validator rule objects or Rule:: composition
Doctrine type Eloquent Attribute cast or custom CastsAttributes

Migration path (reference-port, not lift-and-shift):

  1. Timeboxed source audit (2–3 days). Produce a spec table: every field type, its storage representation, its validation rules, its rendering output, and any side effects (file writes, uploads, container lookups).
  2. Decide build vs. buy. Compare against maintained Laravel options — filament/forms, spatie/laravel-data + validation, novius/laravel-form-builder, or a straightforward custom registry. Most "field type" bundles reduce to a config array plus a validator plus a Blade partial; rebuilding is usually smaller than porting.
  3. If building: ship the contract and registry first (FieldType interface, FieldTypeRegistry, config-driven registration, Manager-style extend()), then validation, then rendering, then persistence casts.
  4. Characterize behavior, don't trust it. If any fixtures, seed data, or production rows exist in the legacy format, snapshot them and write tests against the new implementation to prove parity. Do not assume the original behavior was correct.
  5. Data migration only if required. If the bundle owned a value-encoding format, define a versioned codec and a one-shot backfill; never let the new code read the legacy encoding implicitly.

Compatibility: no Composer install path into any supported Laravel (9/10/11/12) or supported Symfony (5.4+/6/7). Running it at all implies a legacy PHP 5.6–7.0 process on an EOL Symfony — that is a compliance and security blocker independent of functionality.

Sequencing: audit → decision gate → alternative evaluation → (build: contract → registry → validation → rendering → migration) → decommission the reference. Do not open a branch that vendors the bundle "temporarily"; temporary forks of archived bundles become permanent.

Operational Impact

Maintenance — full ownership on day one. Archived with no maintainer means every defect, security advisory, and PHP upgrade is yours. Cost is not the initial port; it is the ongoing tax of a codebase with no upstream. If the team vendors the code, budget it as first-party with a named owner and a review cadence.

Support — none external. No vendor, no maintainer, no community footprint (0 stars, 0 dependents implies essentially no Stack Overflow or issue history to search). Internal documentation of the extracted spec becomes the only support artifact — which is another argument for extracting the spec rather than the code.

Scaling — the wrong axis is at risk. A field-type registry is in-process, config-driven, and trivially cheap; throughput is not the concern. The scaling concern is the runtime: if the only way to execute this code is a PHP 5.6/Symfony 2 process, you are horizontally scaling an EOL runtime that can't receive security patches and can't run modern observability or container base images.

Failure modes to plan for:

  • Composer resolution failure on first require (most likely outcome) — fails fast and safely.
  • Runtime fatals on PHP 8 from removed functions, dynamic properties, and implicit nullables — surfaces only after a forced install.
  • DI config-tree mismatch producing silent defaults rather than errors.
  • Silent behavioral drift during a partial port, especially in validation and value normalization, which corrupts or rejects user data quietly.
  • Unpatched transitive CVEs in Symfony 2 components.
  • Opaque value-serialization format: undocumented encoding makes both porting and rollback risky.

Ramp-up — moderate and shrinking. Symfony 2 bundle conventions (tagged services, compiler passes, config trees) are increasingly unfamiliar to engineers working in modern Laravel, and the idioms don't transfer. Realistic estimate for a small team: 1–2 sprints to audit, extract, and rebuild as a native package with tests — less if the capability is genuinely just a type registry, more if persistence and rendering are entangled. Compare that against the near-zero cost of adopting a maintained Laravel form/field library.

Recommendation: reject as a dependency, preserve as a reference, and reimplement the small useful core natively if the capability is actually needed.

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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings