Weave Code
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

Mago Laravel Package

carthage-software/mago

Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It brings Rust-inspired speed and reliability to PHP projects with a modern toolchain and great developer experience, plus multiple install options (script, Homebrew, Composer).

View on GitHub
Deep Wiki
Context7

title: The linter

Mago's linter 🔎

Mago's linter is a blazing-fast tool for finding and fixing stylistic issues, inconsistencies, and code smells in your PHP code. It helps you maintain a clean, readable, and consistent codebase with minimal effort.

Linter vs. analyzer

While they both find issues, the analyzer and the linter operate at different levels of understanding.

  • The linter is a style editor. It looks at the structure of your code. It enforces your team's coding standards, flags redundant code, and suggests more modern syntax. It doesn't know what your code does, only what it looks like.

  • The analyzer is a fact-checker. It builds a deep, semantic understanding of your entire codebase. It knows what types your functions return, what properties your classes have, and what exceptions can be thrown. It finds logical impossibilities (e.g., "you're calling a method that doesn't exist on this object").

:::info Analogy If your code were an essay, the linter would be the grammar and style checker, while the analyzer would be the editor who checks your facts and ensures your arguments are logical. :::

The semantic checker

Mago processes files in three stages: Parse -> Semantic check -> Lint.

Mago's parser is intentionally tolerant—it can parse syntax that the standard PHP compiler would reject, like features from a future PHP version.

The semantic checker is the crucial second step. Its job is to find syntax errors that Mago's parser allows but PHP would consider fatal. This includes things like:

  • Invalid enum backing types (enum Foo: array {})
  • Using features not available in your configured PHP version (e.g., property hooks in PHP 8.1).

You can run just the first two stages using the --semantics (or -s) flag:

mago lint -s

This makes it a faster and more powerful replacement for php -l, allowing you to quickly validate the basic correctness of your files. It's a great way to start introducing Mago to your codebase incrementally.

Key features

  • Blazing fast — Written in Rust and built on a high-performance arena allocator, making it the fastest PHP linter available.
  • Highly configurable — Every rule can be enabled, disabled, or have its severity level adjusted.
  • Auto-fixing — Many rules provide automatic fixes that can be applied with the --fix flag.
  • Framework integrations — Includes specialized rules for frameworks like Symfony, Laravel, and PHPUnit.

Dive In

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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport