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

Symfony Extensions Laravel Package

gigadrive/symfony-extensions

Gigadrive Symfony Extensions is a collection of reusable helpers and integrations for Symfony applications. It aims to reduce boilerplate and simplify common framework tasks, giving teams a lightweight way to standardize development workflows.

View on GitHub
Deep Wiki
Context7

Getting Started

This is not a Laravel package. It is an archived Symfony/PHP utility library with 1 star, 0 dependents, and a GPL-3.0 license. "Getting started" here means reconnaissance, not composer require.

Work in this order, timeboxed to an afternoon:

  1. Read composer.json first. The php constraint and any symfony/* ranges determine whether it can coexist with Laravel's pinned Symfony components at all. An archived package almost certainly pins ^5.4 || ^6.0 and PHP ^8.0, which will conflict with a current Laravel 11/12 lockfile.
  2. Inventory src/. Expect a flat namespace of small classes — string/array helpers, HTTP wrappers, env or date formatters, DTO traits. Separate framework-coupled code (anything importing Symfony\Component\HttpFoundation\*, AbstractController, EventDispatcherInterface, Bundle, Extension) from plain PHP.
  3. Read the tests. With zero documentation and zero consumers, the test suite is the only specification you get. It also tells you what is not covered.
  4. Check git log -1 and tags. Confirm the archive date and whether a stable tag exists or only dev-main.
  5. Skim the license headers. GPL-3.0 is a distribution decision, not a style choice — see Gotchas.

First use case: pick the one or two framework-agnostic helpers that solve a real problem (slugifier, byte formatter, retry wrapper, value-object trait) and prove them inside a single Laravel test. Do not attempt a full install as step one.

If you insist on requiring it, point Composer at the VCS and pin a commit:

{
  "repositories": [
    { "type": "vcs", "url": "https://github.com/Gigadrive/symfony-extensions" }
  ],
  "require": {
    "gigadrive/symfony-extensions": "dev-main#<commit-sha>"
  }
}

Then run composer update gigadrive/symfony-extensions --with-dependencies, followed immediately by php artisan about and your test suite to catch autoload or container breakage.

Implementation Patterns

Copy-in, don't depend (default recommendation). For a dead single-vendor package, move the 3–5 files you actually need into app/Support/ or a private path repository. Add declare(strict_types=1), add type hints where missing, and write tests against your Laravel version. This sidesteps Composer resolution entirely and makes the code yours.

Isolate the foreign namespace. If you must require it, wrap every call site behind a small interface in app/Contracts and a concrete adapter in app/Support. When (not if) the package breaks on a PHP upgrade, you swap the adapter instead of hunting call sites.

Keep it out of the DI container. Do not attempt to register a Symfony Extension or *Bundle class through a Laravel ServiceProvider. Laravel's container does not run Symfony compiler passes. If a class needs a Symfony ContainerInterface, hand-wire it in a closure binding — assume no integration ships out of the box.

Bridge Symfony components you already have. Laravel already ships symfony/console, symfony/http-foundation, symfony/http-client, symfony/mailer, symfony/process, symfony/error-handler, symfony/var-dumper. If a helper in this package wraps one of those, you can usually drop the dependency and call the component directly — no second utility layer needed.

// Instead of adopting a wrapper, use what Laravel already vendors:
$response = Illuminate\Support\Facades\Http::retry(3, 100)->get($url);

Port helpers into a private package if reuse is real. If two or more of your own apps need the same logic, publish an internal acme/support package under MIT, with its own composer.json, phpunit.xml, and CI. That is the correct home for salvaged code — not an archived third-party repo.

Cherry-pick, don't wholesale import. "Common utilities" is a grab bag by definition. Expect 10–40 classes, of which maybe two are non-trivial. Pull those two.

Gotchas and Tips

GPL-3.0 is the biggest gotcha, not the code. Any distribution of a combined work triggers source-disclosure obligations for the whole derivative. SaaS backends that are never distributed are usually defensible (AGPL, not GPL, is the SaaS-triggering variant), but "usually" is not a legal opinion. Get sign-off in writing, or reimplement. Copying GPL source into a proprietary codebase carries the same exposure as depending on it — vendoring is not a license-laundering trick.

Archived means no CVE path. No PHP minor bumps, no Symfony compatibility fixes, no security patches. You inherit every future vulnerability with no upstream to report to. Add it to your dependency-audit checklist the moment you touch it.

Composer resolution deadlock. The most likely day-one failure is composer update refusing to resolve against your pinned symfony/* versions. Diagnose cheaply with composer why-not gigadrive/symfony-extensions on a scratch branch — it surfaces the exact conflicting constraint in seconds.

Boot-time faults from bundle registration. If the package ships a *Bundle or DependencyInjection\Extension class and something in your app auto-discovers it, you can get container-lifecycle errors at php artisan serve. Remove any auto-discovery entry in bootstrap/providers.php or config/app.php if you see this.

Silent divergence. Utilities that work today can break behaviorally when a pinned Symfony component shifts a minor version, with no changelog or issue tracker to consult. Pin every transitive dependency in your lockfile and re-run your own tests on every Laravel upgrade.

Zero test coverage is a red flag, not a blank slate. With 1 star and 0 dependents, there is no field testing outside the author's environment. Rewrite the tests for anything you port — do not trust the original suite as regression protection.

Debugging tip. Because there is no documentation, use git blame on the file you are porting. The commit message and surrounding diff often reveal the original intent (e.g. "fix timezone bug for EU tenants") faster than reading the code.

Extension points are effectively closed. No upstream maintainer means no PRs, no issue triage, no version bumps. If you find a bug, you own it. Budget a written internal note alongside any ported logic so the reimplementation is not itself a bus-factor-one artifact.

The honest verdict: the ratio of archaeology cost to delivered value is poor. Treat this repository as a reading reference during a spike, not as a dependency. If a specific function earns its keep, copy that function into app/Support (or a private MIT package) and move on.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core