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

Maker Bundle Laravel Package

symfony/maker-bundle

The Symfony MakerBundle is the fastest way to generate common Symfony code like commands, controllers, form classes, and event subscribers. It produces working skeletons that follow current best practices and target the latest Symfony LTS.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. MakerBundle is a Symfony bundle, not a framework-agnostic generator library. It boots inside a Symfony kernel, registers makers as DI services, and writes files through Symfony's Generator/FileManager abstractions (with Doctrine ORM, Twig, PHPUnit and Flex recipes as common inputs). In a Laravel-primary stack there is no kernel, no bundles.php, and no recipe mechanism, so the package cannot be "integrated" — at best it sits inert in vendor/ as a dev dependency nothing loads. Its value proposition is CLI scaffolding (make:controller, make:entity, make:crud, make:command, and in 1.68 the new make:decorator), not runtime capability.

Integration feasibility. Two viable scenarios only: (a) the organization also operates Symfony services, where this is a straightforward require-dev addition; (b) isolated experimentation to borrow template conventions. For a Laravel codebase asked to "make code generation better," the honest answer is that artisan make:* plus your own stubs is the equivalent surface, and MakerBundle does not accelerate that path.

Technical risk.

  • Explicitly unstable inputs and outputs. The BC promise excludes command arguments/options and the generated code itself. Both are exactly what a TPM would want to standardize across teams and CI.
  • Extensibility is out of scope by policy. No custom templates, no alternative target directories, no pluggable generators — the README redirects those needs to coding agents or other tools. Any internal "house style" requirement is a non-starter.
  • Platform floor moved in 1.68: PHP 8.2+ and Symfony 7.4 LTS only. That couples upgrades to Symfony's LTS cadence, not ours.
  • Generated-output churn is visible in recent releases: make:form suffix revert, invokable commands by default, attribute-based Twig extensions, make:user password hashing change to CRC32C, final entities via config. Each is defensible upstream and each is a diff in our repos.
  • Non-interactive mode historically fragile. 1.68 fixes a large batch of --no-interaction crashes (CRUD, controller, security makers, schedule, webhook, message, twig-extension). Good direction, but the pattern recurs, and the project's own AGENTS.md documents the failure shape (typed properties set only in interact()) as a standing hazard.
  • Metadata caution: dependents: 0 alongside 3.3k stars and a 2026-09-12 release date are inconsistent with what a healthy Symfony package looks like; treat both as unverified before they inform any decision.

Key questions.

  1. Do we actually own Symfony applications, or is this request really "we want better scaffolding in Laravel"?
  2. Does any team need custom generator templates or non-default output directories? If yes, this package is disqualified by design.
  3. Will generators run only interactively by developers, or also in CI/bootstrap scripts? Only the former matches the stated BC promise.
  4. Who owns the pinned version per repo, and who reviews generated-code diffs on upgrade?
  5. Is a Symfony 7.4 / PHP 8.2 floor acceptable across our PHP fleet?
  6. Why is this package under consideration at all — evaluated by name recognition, or against the Laravel equivalent?

Integration Approach

Stack fit. Poor for Laravel, good for Symfony. There is no adapter layer worth building: MakerBundle's makers are Symfony-console commands reading from InputInterface and writing through Symfony's file generator. Wrapping them in an Artisan command would mean embedding a Symfony kernel in a Laravel app to produce code that follows Symfony conventions — the resulting artifacts would be wrong for Laravel anyway.

Migration path.

  • Laravel-only: do not adopt. Record the decision and the rationale (scope policy, no pluggability, Symfony-only runtime) so it isn't relitigated. Optionally mine the templates as reference material for our own Artisan stubs — ideas only, no dependency.
  • Symfony services present: composer require --dev symfony/maker-bundle, register the bundle in bundles.php for dev/test only, verify it never loads in prod, and pin the exact minor in composer.lock.
  • Mixed estate: treat it as per-service tooling with a shared version policy, not a platform standard.

Compatibility. Requires PHP 8.2+ and Symfony 7.4+. Practical coupling to DoctrineBundle (v3-related fixes in 1.66), PHPUnit (11 compatibility in 1.67), and Twig extension conventions. In a Laravel composer.json these Symfony constraints buy nothing and only add resolution surface.

Sequencing.

  1. Classify the estate: Symfony services vs Laravel-only. Gate everything downstream on this.
  2. Confirm no requirement for custom templates, custom target paths, or pluggable generators — the README's scope section is decisive here.
  3. Pilot in one Symfony service, dev environment only, interactive use only.
  4. Document the sanctioned command set and the "review generated code like any PR" rule.
  5. Pin versions; on upgrade, diff the generator output against a fixture project and read the changelog before merging.
  6. Only after 3–5, consider --no-interaction in scripts, and only for makers with explicit test coverage of that path.

Operational Impact

Maintenance. Low runtime risk — dev-only dependency, zero production blast radius. The real cost is upgrade hygiene: generated code changes across minors, so budget review time on each bump. Symfony's LTS cadence sets the floor, so this dependency will periodically force PHP upgrades on the services using it.

Support. MIT, actively maintained with a steady release stream and unusually readable changelogs and PR-level detail. The tradeoff is a firm, publicly stated refusal to accept extensibility requests; teams with house conventions will be told no, politely, in the README. Support is community/Symfony-core-adjacent, with no commercial path, and dependents: 0 means no downstream ecosystem to signal through. For a Laravel team there is no support relationship at all — the Symfony docs assume a Symfony app.

Scaling. No runtime scaling dimension; this is a per-developer tool. Organizational scaling is the concern: N repos × pinned versions × divergent generated code, plus onboarding confusion when Laravel developers read Symfony documentation and generate Symfony-shaped classes they cannot use.

Failure modes.

  • --no-interaction crashes (uninitialized typed properties, prompts inside generate()) — largely fixed in 1.68, but a recurring class of bug; the project's own AGENTS.md treats it as a standing review pattern.
  • Silent type coercion on boolean options (no strict_types), so "false" becomes true for anyone scripting flags.
  • A second composer require in the same process corrupting the DI container cache mid-run — relevant precisely to the automation scenario we should avoid.
  • BC breaks in command names, arguments, or options silently breaking CI scripts.
  • Generated code drifting from internal standards with no supported override mechanism.
  • Misapplication in a Laravel project after a doc-driven copy-paste, producing unusable artifacts.

Ramp-up. Near zero for a Symfony developer — it is the first command anyone learns. For a Laravel-only team it is negative value: time spent learning bundles, Flex recipes, and autowiring produces no skill transferable to the work they actually ship. Recommend a single evaluator spend half a day confirming the non-fit rather than a team-wide trial.

Recommendation. Do not adopt in a Laravel-primary stack — the package is architecturally, not marginally, misaligned, and its scope policy forbids the customization any standardization effort would require. Adopt conditionally, as a pinned require-dev tool, where Symfony services exist. Before any decision is recorded, reconcile the dependents: 0 and 2026-09-12 release data against the live repository.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package