|
| 1 | +<?php |
| 2 | + |
| 3 | +declare(strict_types=1); |
| 4 | + |
| 5 | +use PhpParser\Node\Expr\ClassConstFetch; |
| 6 | +use PhpParser\Node\Name\FullyQualified; |
| 7 | +use Rector\Config\RectorConfig; |
| 8 | +use RectorLaravel\Rector\MethodCall\ReplaceServiceContainerCallArgRector; |
| 9 | +use RectorLaravel\ValueObject\ReplaceServiceContainerCallArg; |
| 10 | + |
| 11 | +return static function (RectorConfig $rectorConfig): void { |
| 12 | + $rectorConfig->import(__DIR__ . '/../config.php'); |
| 13 | + |
| 14 | + $servicesMap = [ |
| 15 | + 'events' => 'Illuminate\Contracts\Events\Dispatcher', |
| 16 | + 'log' => 'Psr\Log\LoggerInterface', |
| 17 | + 'router' => 'Illuminate\Routing\Router', |
| 18 | + 'url' => 'Illuminate\Contracts\Routing\UrlGenerator', |
| 19 | + 'redirect' => 'Illuminate\Routing\Redirector', |
| 20 | + 'auth' => 'Illuminate\Contracts\Auth\Factory', |
| 21 | + 'auth.driver' => 'Illuminate\Auth\SessionGuard', |
| 22 | + 'cookie' => 'Illuminate\Cookie\CookieJar', |
| 23 | + 'db.factory' => 'Illuminate\Database\Connectors\ConnectionFactory', |
| 24 | + 'db' => 'Illuminate\Database\ConnectionResolverInterface', |
| 25 | + 'db.connection' => 'Illuminate\Database\ConnectionInterface', |
| 26 | + 'db.schema' => 'Illuminate\Database\Schema\SQLiteBuilder', |
| 27 | + 'db.transactions' => 'Illuminate\Database\DatabaseTransactionsManager', |
| 28 | + 'encrypter' => 'Illuminate\Encryption\Encrypter', |
| 29 | + 'files' => 'Illuminate\Filesystem\Filesystem', |
| 30 | + 'filesystem' => 'Illuminate\Contracts\Filesystem\Factory', |
| 31 | + 'session' => 'Illuminate\Session\SessionManager', |
| 32 | + 'session.store' => 'Illuminate\Contracts\Session\Session', |
| 33 | + 'view' => 'Illuminate\Contracts\View\Factory', |
| 34 | + 'view.finder' => 'Illuminate\View\ViewFinderInterface', |
| 35 | + 'blade.compiler' => 'Illuminate\View\Compilers\CompilerInterface', |
| 36 | + 'view.engine.resolver' => 'Illuminate\View\Engines\EngineResolver', |
| 37 | + 'flare.logger' => 'Monolog\Logger', |
| 38 | + 'cache' => 'Illuminate\Contracts\Cache\Factory', |
| 39 | + 'cache.store' => 'Illuminate\Cache\Repository', |
| 40 | + 'memcached.connector' => 'Illuminate\Cache\MemcachedConnector', |
| 41 | + 'queue' => 'Illuminate\Queue\QueueManager', |
| 42 | + 'queue.connection' => 'Illuminate\Contracts\Queue\Queue', |
| 43 | + 'queue.worker' => 'Illuminate\Queue\Worker', |
| 44 | + 'queue.listener' => 'Illuminate\Queue\Listener', |
| 45 | + 'queue.failer' => 'Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider', |
| 46 | + 'migration.repository' => 'Illuminate\Database\Migrations\MigrationRepositoryInterface', |
| 47 | + 'migrator' => 'Illuminate\Database\Migrations\Migrator', |
| 48 | + 'migration.creator' => 'Illuminate\Database\Migrations\MigrationCreator', |
| 49 | + 'composer' => 'Illuminate\Support\Composer', |
| 50 | + 'hash' => 'Illuminate\Contracts\Hashing\Hasher', |
| 51 | + 'hash.driver' => 'Illuminate\Contracts\Hashing\Hasher', |
| 52 | + 'mail.manager' => 'Illuminate\Contracts\Mail\Factory', |
| 53 | + 'mailer' => 'Illuminate\Mail\Mailer', |
| 54 | + 'auth.password' => 'Illuminate\Contracts\Auth\PasswordBrokerFactory', |
| 55 | + 'auth.password.broker' => 'Illuminate\Contracts\Auth\PasswordBroker', |
| 56 | + 'pipeline' => 'Illuminate\Contracts\Pipeline\Pipeline', |
| 57 | + 'redis' => 'Illuminate\Contracts\Redis\Factory', |
| 58 | + 'translation.loader' => 'Illuminate\Contracts\Translation\Loader', |
| 59 | + 'translator' => 'Illuminate\Contracts\Translation\Translator', |
| 60 | + 'validation.presence' => 'Illuminate\Validation\DatabasePresenceVerifier', |
| 61 | + 'validator' => 'Illuminate\Contracts\Validation\Factory', |
| 62 | + 'command.tinker' => 'Laravel\Tinker\Console\TinkerCommand', |
| 63 | + ]; |
| 64 | + |
| 65 | + $ruleConfig = array_map( |
| 66 | + fn (string $service, string $interface) => new ReplaceServiceContainerCallArg( |
| 67 | + $service, |
| 68 | + new ClassConstFetch( |
| 69 | + new FullyQualified($interface), |
| 70 | + 'class' |
| 71 | + ) |
| 72 | + ), |
| 73 | + array_keys($servicesMap), |
| 74 | + $servicesMap, |
| 75 | + ); |
| 76 | + |
| 77 | + $rectorConfig->ruleWithConfiguration( |
| 78 | + ReplaceServiceContainerCallArgRector::class, |
| 79 | + $ruleConfig |
| 80 | + ); |
| 81 | +}; |
0 commit comments