← Package directory
Available on winget

Install Mago

Mago is a toolchain for PHP that aims to provide a set of tools to help developers write better code.

Install with winget
winget install --id CarthageSoftware.Mago
Upgrade
winget upgrade --id CarthageSoftware.Mago
Uninstall
winget uninstall --id CarthageSoftware.Mago

About Mago

Mago is a comprehensive toolchain for PHP that helps developers write better code. Inspired by the Rust ecosystem, Mago brings speed, reliability, and an exceptional developer experience to PHP projects of all sizes.

What's new in 1.28.0

Mago 1.28.0 A feature release led by sound generic type-checking in the analyzer: diamond merges, variance, bounds, Liskov substitution, and constructor arity are now all enforced. The linter gains five Laravel-focused rules, and the CLI picks up a version subcommand, a configurable version-drift-fail-level, and --remove-outdated-baseline-entries for pruning stale baseline entries. Internally, PHP source handling moves to a byte-native representation, retiring mago-atom in favour of mago-word and mago-bytes. The rest is a batch of analyzer and formatter fixes. ✨ Features Analyzer - Sound generic type-checking: enforces diamond merges, variance, bounds, Liskov substitution, and constructor arity. (5af93b3) Linter - Laravel rules: five rules for test assertions, queries, fake(), casts, and validation. (#1838, #1837, #1836, #1834, #1833, 6156709) CLI - version subcommand: prints the version, mirroring the --version flag. (#1840, d93d75a) - version-drift-fail-level: fail the run on minor or patch version drift, not just major. (#1864, 980dbfa) - --remove-outdated-baseline-entries: prunes baseline entries that no longer match any issue. (#1865, d35e9d3) 🐛 Bug Fixes Analyzer - redundant-type-comparison false positives: impossible negated assertions are no longer flagged. (#1842, c52b5bd) - Template defaults at call sites: a template's declared default type is now applied at the call site. (#1856, e8d5a84) Formatter - Mid-line echo tags: indent alignment restored for echo tags that don't begin a line. (#1857, bae65db) 📖 Documentation - WinGet: installation guide now mentions the W...

Read release notes

Version history

Version Updated Notes
1.28.0 Unknown Mago 1.28.0 A feature release led by sound generic type-checking in the analyzer: diamond merges, variance, bounds, Liskov substitution, and constructor arity are now all enforced. The linter gains five Laravel-focused r...
1.27.1 Unknown Release notes
1.27.0 Unknown Release notes
1.26.0 Unknown Release notes