fi/fifreecorebundle
fi/fifreecorebundle is a Laravel/PHP package that provides a reusable core bundle for shared application foundations. It helps organize common functionality and integration points, reducing boilerplate when bootstrapping or extending compatible projects.
Read this before composer require: fi/fifreecorebundle is a Symfony bundle, not a Laravel package. The *Bundle suffix, vendor prefix fi (Comune di Firenze), and description ("Framework Fifree") all point at Symfony conventions — no ServiceProvider, no config/fifree.php, no Facade, no Illuminate\* references. If you paste it into a Laravel app the way you would a normal package, auto-discovery will not wire up a service provider because there likely isn't one to discover; you'll get a class that never boots. Plan accordingly.
Where to look first (in order):
composer.json — type, require (does it demand symfony/framework-bundle? symfony/http-kernel? a specific PHP floor?), autoload PSR-4 map, and extra.LICENSE — Italian PAs commonly pick EUPL or AGPL. AGPL has direct implications for SaaS. Confirm before you write a single line of integration code.src/ — look for a FifreeCoreBundle class extending Symfony\Component\HttpKernel\Bundle\Bundle. That tells you the actual runtime contract.DependencyInjection/ — the Extension and Configuration classes reveal what services are registered and what config tree is expected.README — expect Italian; expect it to describe the parent Fifree framework, not just this bundle.First realistic use case: stand up a throwaway Symfony app (matching whatever Symfony version the package declares) and boot the bundle in isolation. That's your discovery spike. From there, decide whether you're going to (a) keep a Symfony microservice for this bounded context and call it over HTTP from Laravel, or (b) extract the domain classes you actually need into your own namespace. Do not attempt to bolt it into a Laravel kernel.
If you must stay in Laravel: the pragmatic entry point is an anti-corruption layer. Wrap the extracted/ported logic behind interfaces you own (App\Contracts\ItalianPa\SpedizioniService, etc.) and implement them with either a forked-and-vendored copy of the relevant classes or an HTTP client pointing at a small Symfony sidecar. Your Laravel code should never know the word "Fifree."
Pattern 1 — Spike in a disposable Symfony container. Pin the Symfony major version the bundle declares, add the bundle to config/bundles.php, seed an App\Kernel, and exercise two or three concrete capabilities. Timebox it. The goal is to learn the domain model and confirm it runs, not to ship.
Pattern 2 — Extract to a framework-agnostic service namespace. Pull the domain classes you actually need (identity, registry lookups, payment metadata, protocol numbering — whatever your backlog needs) into App\Services\… or a small internal package. Strip Symfony AbstractController, ContainerAware, and event-dispatch coupling at the seam. Write contract tests against the original behavior so parity is provable.
Pattern 3 — Sidecar microservice. If the bundle's domain logic is entangled with Symfony runtime concerns you can't easily extract, run it as a Symfony app in its own container and expose a narrow HTTP API to your Laravel app. This isolates upgrade risk (one service to patch) and keeps your main app clean.
Pattern 4 — Vendored fork with a pinned SHA. Copy the source into packages/fifree-core/ or a private VCS repo, pin the commit you forked from, add a FORK_NOTES.md recording the license obligations and the fork point, and add a minimal test harness. This is the honest option when you decide to "own" it. Do not rely on Packagist for a package with no maintenance signal.
Day-to-day workflow once something is in place:
config/packages/ — but if you've extracted, keep equivalent config in config/services.php (Laravel) or a dedicated config class you control.Integration tips:
composer.json files separate — do not merge autoloads.The framework mismatch is the first gotcha. Any instruction, tutorial, or Stack Overflow answer aimed at Laravel packages (service providers, facades, php artisan vendor:publish, package discovery) does not apply. If you find yourself fighting Illuminate\Foundation\Application, stop — you're on the wrong track.
Pitfalls to expect:
composer.json type isn't library masquerading as a bundle.symfony/framework-bundle constraint like ^3.4 or ^4.4 will not resolve on modern runtime. Check before you plan.prepend, boot, and any set_error_handler calls.Debugging tips:
bin/console debug:container and debug:config to see exactly what services and configuration it registers. That's your fastest way to a capability inventory.if ($container->getParameter('kernel.environment') === …)).DependencyInjection/FifreeCoreExtension::load — it's usually the map of the whole package.Extension points (assuming a Symfony shape):
Extension subclass plus a Configuration class — that's where you override defaults in your host app's config/packages/fifree_core.yaml.When in doubt: treat this as reference material to read, not a dependency to install. Zero stars, zero dependents, no release cadence, and an apparent framework mismatch all point the same direction. Vendor and own, or don't use it — but don't leave it as a live Composer dependency in a Laravel application you have to support.
How can I help you explore Laravel packages today?