Laramago — Mago для Laravel

Laramago — Mago для Laravel: ноутбук с кодом и диагностикой, рядом схема свойств и связей моделей; иллюстрация

Laramago — мой открытый PHP-пакет, который помогает Mago понимать Laravel-проекты. Он добавляет настройки проверок и сведения о привычных конструкциях фреймворка: моделях Eloquent, их свойствах, связях и запросах.

Laramago — Mago для Laravel: ноутбук с кодом и диагностикой, рядом схема свойств и связей моделей; иллюстрация
Laramago — Mago для Laravel. Иллюстрация.

Для чего нужен Laramago

Mago объединяет линтер, форматирование и статический анализ PHP. В Laravel часть поведения скрыта за динамическими вызовами: свойство модели берётся из базы, метод запроса возвращает модель, а зависимость разрешается через контейнер. Для анализатора всё это нужно описать.

Я делаю Laramago, чтобы такие проверки было удобнее использовать в собственных проектах. Пакет дополняет Mago знаниями о Laravel и помогает находить ошибки до запуска приложения.

Что уже работает

  • Laravel-пресет для линтера и форматирования, подключение через Composer. Существующая конфигурация Mago сохраняется.
  • Анализ поддерживаемых свойств и связей Eloquent по исходникам миграций, casts, accessors и PHPDoc.
  • Уточнение типов в стандартных запросах, локальных scopes, построителях и коллекциях моделей.
  • Дополнительные сведения о конфигурации, контейнере и других поддерживаемых конструкциях Laravel.
  • Экспорт метаданных конфигурации, маршрутов и переводов для инструментов разработки.

Основной анализ работает по исходникам без запуска Laravel и обращения к базе. При этом загружается Composer-автозагрузчик проекта. Поддержка каждой конструкции имеет свои границы: всю динамику приложения автоматически восстановить пока нельзя.

Что появилось в 0.1.5

В релизе 0.1.5 появился отдельный необязательный сборщик сведений о схеме базы для явно выбранных моделей. Он помогает дополнить анализ фактическими данными о таблицах и casts.

Пока этот режим поддерживает только SQLite в файле. Он включается отдельно и выполняет код приложения; обычные проверки без него по-прежнему доступны. Также в релизе усилены проверки актуальности метаданных и исправлены предупреждения в самом пакете.

Стадия проекта и версии

Сейчас Laramago — рабочий предрелиз с первым реальным внедрением. Моя нумерация отражает именно опыт использования. В версии 0.1.5:

  • 0 — предрелизная стадия;
  • 1 — число реальных проектов, на которых Laramago уже запущен;
  • 5 — номер патч-версии.

Версия 1.0 появится, когда Laramago будет работать на десяти реальных проектах. Хочу проверить пакет на разных приложениях и их обычных задачах. Дальше — новые внедрения, исправления и расширение поддержки Laravel по найденным случаям.

Замеры и глубина анализа

На 16 октября 2026 года проверил Laramago 0.1.5 на одном реальном приложении и сопоставил поведение с PHPStan на открытом наборе из 33 пар «ошибка и исправленный вариант». Единого эквивалентного уровня PHPStan у связки Mago и Laramago нет: покрытие разных проверок пересекается.

В серии из трёх полных запусков медиана составила 415,83 с для Mago с Laramago, 69,37 с для PHPStan с Larastan на уровне 10 и 7,77 с для Mago без расширений. Это разные профили проверок на одном приложении; скорость пока требует работы. Результаты, ограничения сравнения и планы по оптимизации добавил в запись о проекте.

Где посмотреть

Пакет доступен на Packagist. Требуются PHP 8.2 или новее в пределах ветки PHP 8 и Composer 2. Установка, настройка и ограничения описаны в документации проекта.

Как создавался Laramago и почему я привязал версии к реальным внедрениям. Последующие новости собираю под меткой Laramago.

Исходный код на GitHub · Все мои проекты.

Поделиться с друзьями
Блог Ичи