lamoda/cleaner-bundle
A lightweight Symfony bundle from Lamoda that provides reusable cleaner services for sanitizing and normalizing application data. Configure cleaning rules, integrate them into PHP workflows, and keep input and domain data consistent with minimal boilerplate.
Architecture fit
lamoda/cleaner-bundle is not a Laravel package. It is a Symfony bundle — a thin dependency-injection and configuration shim whose only job is to register and configure services from the underlying lamoda/cleaner library inside a Symfony kernel. In a Laravel application there is no bundle registration mechanism, so the package's actual deliverable (the bundle class plus Resources/config service definitions) is inert. The only transferable value is the core library it wraps, and even that must be assumed rather than verified given the repo state.
For a Laravel/PHP stack the realistic architectural verdict is: do not adopt the bundle; evaluate the core library at most, and only for a narrowly scoped, non-production capability (most plausibly test-fixture teardown / ordered data cleanup, which is the typical role of libraries in this family — confirm before relying on it).
Integration feasibility
lamoda/cleaner directly and hand-write a ServiceProvider + config facade, or (b) extract the small amount of logic you need into first-party code.Technical risk
composer resolution in a modern Laravel app. Expect composer require conflicts before you ever reach runtime.Key questions
lamoda/cleaner (core) still maintained and PHP 8.x-compatible, even though the bundle is archived? Check its own release history and constraint set before any further work.Stack fit
Poor as packaged, workable only as extracted logic. The bundle assumes Symfony's kernel, DI container, and bundle config conventions. Laravel's service container, package discovery, and config publishing are different enough that the bundle would be dead weight in vendor/. Treat the package as reference material, not a dependency.
Migration path
composer.json via a VCS repository entry, and document the fork owner.CleanerServiceProvider registering the client as a singleton with a published config file — approximately the same surface the Symfony bundle provided.Compatibility
Verify before committing: PHP constraint in composer.json, Symfony component major versions, and whether the core library's constraints can coexist with our current Laravel and PHP versions. Assume they cannot until proven otherwise. There is no released version aligned to PHP 8.2+, and no maintainer to publish one.
Sequencing
Spike → capability gap assessment → build-vs-fork decision → (if fork) CI + ownership + security watch → Laravel service provider → test coverage. Do this in a single iteration; it should not become a multi-sprint workstream, and it should not block a release.
Maintenance
Full ownership transfers to us on the day we adopt it. With the upstream archived, there is no upgrade path, no patch stream, and no maintainer relationship. Budget for periodic manual review of the fork against PHP and Laravel upgrades — a recurring cost that will never decrease. For a 2-star, zero-dependent package, this is almost certainly a worse trade than writing the equivalent logic ourselves.
Support
None. No issue triage, no security advisories, no CVE response. If a vulnerability is disclosed in the core library or its dependencies, we are the responders. This must be surfaced explicitly to security review; an archived upstream with unpatchable transitive dependencies is a common blocker for production inclusion.
Scaling
If the capability is used only in test/CI teardown, scaling is a non-issue — it runs at fixture volume. If someone later wires it into a production data-cleanup path, the failure profile changes: bulk deletion without chunking causes long transactions, lock contention, and replication lag on large tables. Gate this explicitly — document that adoption is dev/test scope only, and enforce it in code review.
Failure modes
Ramp-up
Low technical ramp-up — the API surface is small and the bundle layer is trivial to replicate. The real ramp-up cost is organizational: establishing fork ownership, adding CI, registering a security-watch entry, and socializing the "test-only" usage constraint. That overhead likely exceeds the cost of a clean first-party implementation.
Recommendation: Reject as a dependency. Extract the underlying capability into first-party Laravel code (preferred), or fork the core library with explicit ownership and CI only if the spike proves the logic is non-trivial to reproduce.
How can I help you explore Laravel packages today?