funddy/persistence-bundle
Funddy Persistence Bundle is a Symfony bundle for wiring persistence infrastructure into PHP apps, helping organize repositories, storage services, and transactional data access while keeping domain persistence concerns out of application code.
First, reset expectations: this is not a Laravel package. funddy/persistence-bundle is a Symfony bundle (composer type symfony-bundle) that wires the companion funddy/persistence component into a Symfony DI container. There is no service provider, no facade, no config/persistence.php, and no auto-discovery. If you are assessing it for a Laravel codebase, treat it as research material for the underlying component, not as a dependency you install.
Minimal steps:
composer.json first — check the require block for Symfony and PHP constraints. Given the package's age and adoption (3 stars, 0 dependents), expect Symfony 2.x/3.x-era constraints that will not resolve on PHP 8 + Symfony 6/7. Run composer why-not php 8.2 before anything else.DependencyInjection/*Extension.php plus Resources/config/*.{yml,xml}. That is where the entire public surface lives — the extension defines the config tree and the service definitions you can actually inject.funddy/persistence for the real API (persistence manager, repository contracts, unit-of-work semantics). The bundle is thin; the component is the product.AppKernel/bundles.php, define an aggregate repository as a service, inject the repository (not the container) into a command or controller, and persist an aggregate.For Laravel specifically, the pragmatic "first use case" is: skip the bundle, and if the abstraction appeals, bind the component's persistence interface to your own implementation in AppServiceProvider.
$container->get() — it defeats the point of the DI wiring the bundle provides.OrderRepository interface in the domain, and have the bundle-wired implementation satisfy it. This is what makes the package replaceable when you inevitably migrate off it.DB::transaction(); hook after-commit work onto DB::afterCommit() or a terminable middleware. The architectural shape survives the port; the bundle does not.packages/ or a fork, and budget for owning it.funddy/persistence. Installing the bundle without understanding the component gets you service definitions you can't reason about.debug:container --tag=<tag> and debug:container --show-private to confirm registration before debugging business logic.bin/console lint:container, then debug:container, then the extension's config tree, then your code. A Definition-level dump() inside the pass is often faster than reading the YAML.decorates:), add a tagged repository, then subclass/override a service definition in your app config. Avoid modifying the bundle's own config files — you'll lose the changes on the next fork sync.app/Support/Persistence namespace and move on. You'll get 90% of the design value at 5% of the maintenance cost.How can I help you explore Laravel packages today?