entelisteam/lbaf-rector
Composer 安装命令:
composer require entelisteam/lbaf-rector
包简介
Recursive search for rector rules among dependencies
关键字:
README 文档
README
Рекурсивный сборщик Rector-миграций по дереву зависимостей для LBAF-based проектов.
Пакет собирает Rector-конфиг из миграций всех установленных Composer-пакетов, которые объявили свои миграции через extra.lbaf-rector-migrations, плюс миграции самого корневого проекта (если они есть). Это позволяет каждому пакету в экосистеме LBAF поставлять свои Rector-правила и быть уверенным, что они применятся в любом проекте, где этот пакет установлен.
Установка
composer require --dev entelisteam/lbaf-rector
Зависимость подключается в любой LBAF-based проект — даже если у самого проекта нет своих Rector-миграций. В этом случае пакет всё равно соберёт и применит миграции из всех зависимостей.
Настройка проекта
1. rector.php в корне проекта
Создайте rector.php со следующим содержимым:
<?php declare(strict_types=1); return \EntelisTeam\Lbaf\Rector\RectorMigrationManager::apply();
По умолчанию миграции применяются к каталогу src/ корневого проекта.
2. Composer-скрипты
Добавьте в composer.json секцию scripts:
{
"scripts": {
"rector:check": "vendor/bin/rector process --dry-run",
"rector:fix": "vendor/bin/rector process",
"post-update-cmd": "test ! -f vendor/bin/rector || vendor/bin/rector process"
}
}
Использование:
composer rector:check # посмотреть, что будет изменено composer rector:fix # применить миграции
Хук post-update-cmd автоматически применяет миграции после каждого composer update — код проекта сразу приводится к актуальному API обновлённых зависимостей, остаётся проверить дифф и прогнать тесты. Проверка test ! -f vendor/bin/rector нужна, чтобы хук молча пропускался при обновлении без dev-зависимостей (composer update --no-dev). Миграции идемпотентны: повторный запуск по уже обновлённому коду ничего не меняет.
Собственные Rector-миграции в проекте
Если проект реализует свои Rector-миграции, они должны удовлетворять следующим требованиям.
1. Класс-реестр миграций
Создайте класс, реализующий EntelisTeam\Lbaf\Rector\RectorMigrationListInterface. Метод all() должен вернуть список FQN классов-миграций:
<?php declare(strict_types=1); namespace Vendor\MyProject\Rector; use EntelisTeam\Lbaf\Rector\RectorMigrationListInterface; final class MigrationList implements RectorMigrationListInterface { public static function all(): array { return [ // FQN ваших Rector-миграций ]; } }
2. Регистрация в composer.json
В composer.json добавьте ключ extra.lbaf-rector-migrations с полным именем класса-реестра:
{
"extra": {
"lbaf-rector-migrations": "Vendor\\MyProject\\Rector\\MigrationList"
}
}
3. Autoload
Namespace, в котором находятся класс-реестр и сами миграции, обязан быть в секции autoload (а не autoload-dev) — иначе при запуске Rector в зависимых проектах классы не будут найдены.
Рекомендация: для миграций используйте отдельный namespace второго уровня (например, Vendor\MyProject\Rector\) и отдельную папку, не пересекающуюся с src/:
{
"autoload": {
"psr-4": {
"Vendor\\MyProject\\": "src/",
"Vendor\\MyProject\\Rector\\": "rector/"
}
}
}
Это нужно для того, чтобы миграции зависимостей случайно не «приехали» на код самих миграций проекта и не сломали их.
Требования к Rector-миграциям
Каждый класс-миграция, попадающий в MigrationList::all(), должен удовлетворять двум требованиям.
1. Сигнатура
Класс должен реализовывать статический метод apply, принимающий и возвращающий RectorConfigBuilder:
use Rector\Configuration\RectorConfigBuilder; final class Migration_20260513_AddStrictTypes { public static function apply(RectorConfigBuilder $config): RectorConfigBuilder { return $config ->withRules([/* ... */]); } }
RectorMigrationManager последовательно прокидывает один и тот же RectorConfigBuilder через apply() каждой миграции, накапливая правила.
2. Нейминг
Миграции всех пакетов (зависимости + корневой проект) собираются в один плоский список и сортируются по basename класса (без namespace). Из этого следуют два правила:
- Уникальный basename в пределах всей экосистемы. Два класса
AddStrictTypesиз разных пакетов столкнутся в сортировке непредсказуемо. Закладывайте уникальность в само имя класса, а не только в namespace. - Префикс со словом Migration и датой-временем в формате
YYYYMMDD_HHMM— рекомендуемый способ получить стабильный, воспроизводимый порядок применения:
Migration_20260513_1023_AddStrictTypes
Migration_20260601_1920_RenameLegacyClasses
Migration_20260715_0740_ReplaceDeprecatedApi
Дата-время отражает момент создания миграции; более ранние применяются раньше. Такая схема одновременно решает проблему уникальности (дата + описание) и порядка.
Кастомные пути применения
По умолчанию миграции применяются к src/ корневого проекта. При необходимости в RectorMigrationManager::apply() можно передать массив путей относительно корня проекта — например, чтобы применить миграции и к тестам:
<?php declare(strict_types=1); return \EntelisTeam\Lbaf\Rector\RectorMigrationManager::apply([ __DIR__ . '/src', __DIR__ . '/tests', ]);
Версионирование
Все пакеты LBAF следуют SemVer:
- Major (
1.x→2.0) — слом обратной совместимости публичного API. Каждое такое изменение сопровождается Rector-миграцией (см. lbaf-rector). Обновляется только вручную: поднять constraint вcomposer.jsonи выполнитьcomposer update. - Minor (
1.2→1.3) — новая функциональность, обратная совместимость сохранена. - Patch (
1.2.0→1.2.1) — исправления без изменения публичного API.
Правило: если изменение требует Rector-миграции — это major, иначе minor или patch.
Зависимости на пакеты LBAF указываются через caret ("entelisteam/lbaf-*": "^1.2"): minor и patch подтягиваются обычным composer update, major автоматически не устанавливается. После обновления Rector-миграции применяются автоматически (хук post-update-cmd); если хук не настроен — выполните composer rector:fix.
entelisteam/lbaf-rector 适用场景与选型建议
entelisteam/lbaf-rector 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rector」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 entelisteam/lbaf-rector 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 entelisteam/lbaf-rector 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 entelisteam/lbaf-rector 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Rector rules for Silverstripe CMS.
Internal rules for rector.
Interactive CLI that generates customized Claude Code markdown files (CLAUDE.md, commands, agents) for PHP projects with Symfony, Laravel, Rector, PHPStan, PHP-CS-Fixer, GrumPHP and more.
Beautiful HTML output formatter for Rector PHP
Rector rules and sets for automated XOOPS module modernisation.
The quickest and easiest way to run rector/rector with any PHP app.
统计信息
- 总下载量: 22
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 39
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-13