havvg/dry-bundle
A Symfony bundle that promotes DRY development by packaging reusable helpers and conventions for reducing boilerplate and repeated configuration across your application.
Architecture fit: Fundamental mismatch. Despite being framed as a "Laravel/PHP package," havvg/dry-bundle is a Symfony2 bundle (HavvgDRYBundle). Symfony bundles extend Bundle, register through services.yml/xml, compiler passes, and the Symfony DI container. Laravel packages extend service providers, facades, and the Laravel container. None of the bundle's wiring is portable. What is potentially transferable are the underlying "common pattern" helpers — and only as a rewrite, never a dependency.
Integration feasibility: Near zero as-is. There is no composer require path that yields working functionality in Laravel. The bundle also carries PSR-0 autoloading and a symfony/symfony ~2.0 constraint that will conflict with any modern dependency tree. Practical engagement means reading the source, extracting patterns (base classes, traits, utility helpers), and reimplementing them in Laravel idioms.
Technical risk: High.
Key questions:
Illuminate\Support\Str/Arr, current Symfony equivalents) already solve the same problem without the risk?Stack fit: None directly. The bundle assumes the Symfony kernel, bundle registration, DI compiler passes, and Symfony's event dispatcher. A Laravel application cannot consume it. Any "integration" is a conceptual extraction into Laravel-native constructs (traits, base classes, service providers, container tags).
Migration path (time-boxed, 1–2 days max):
src/Havvg/Bundle/DRYBundle/: the bundle class, DI extension, Resources/config/*.xml, and any Model/, Util/ classes. Enumerate concrete helpers.HasSlug via boot{TraitName}(), Eloquent scopes, container tags) with tests.app/Support/ with attribution and make them deletable with a single rm.Compatibility: Reference code only. If any legacy Symfony environment exists in the estate, verify its Symfony/PHP versions before referencing the artifact; otherwise treat it purely as prose.
Sequencing: Audit → triage → ADR → reimplementation → tests. Default outcome should be closing after triage given the low expected yield.
Maintenance: Effectively unsupported — no maintainer activity, Symfony2-era code, no security posture. It must not enter production dependencies; if it somehow did, it would be a standing unpatched-transitive-code risk.
Support: Zero community surface — 9 stars, 0 dependents, no issue-tracker activity or case studies. Any reimplemented pattern becomes entirely our support burden.
Scaling: Low runtime concern — DRY helpers are thin abstractions. The real scaling risk is organizational: a bespoke, un-owned reimplementation accretes entropy across products.
Failure modes:
composer.json invites accidental use.Ramp-up: Reading the small codebase is trivial. Porting is moderate and self-funded. The real ramp is ownership: any adopted pattern must be assigned to a team, tested, and documented in our own conventions before it ships.
TPM recommendation: Do not adopt as a dependency. Run a short, time-boxed reference audit; proceed to reimplementation only if a pattern shows clear, current, unmet value in our Laravel codebase — and only with a named owner and tests. Given 0 dependents, a 0.105 composite score, and Symfony2 EOL, the default decision is to close this out after the audit and mine it only for inspiration.
How can I help you explore Laravel packages today?