rector/vendor/rector/rector-symfony
Tomas Votruba bd3297e237 Updated Rector to commit 84639e6aa9c5daa4958121e9aa19e36b5b6bb9b6
84639e6aa9 [Php83] Add support +/- value on constant on AddTypeToConstRector (#5694)
2024-03-05 22:49:19 +00:00
..
config/sets Updated Rector to commit b523b734e052b47d756330e7deeaa68372fbd494 2024-03-04 11:27:13 +00:00
docs Updated Rector to commit 07df7dc1a344c52711441149d61251a4fe10366d 2024-01-16 15:04:16 +00:00
rules Updated Rector to commit 94b5561ca87ee6825a098c7c506b774582bf3354 2024-03-01 20:02:28 +00:00
src Updated Rector to commit 94b5561ca87ee6825a098c7c506b774582bf3354 2024-03-01 20:02:28 +00:00
LICENSE Updated Rector to commit 89a7a4dfbb3e05a306c0f5b9950c28588d4f2af9 2022-07-01 13:42:45 +00:00
README.md Updated Rector to commit 84639e6aa9c5daa4958121e9aa19e36b5b6bb9b6 2024-03-05 22:49:19 +00:00
composer.json Updated Rector to commit 8f993b57a88d299f57461169803ddfdab886a892 2024-02-09 16:49:04 +00:00

README.md

Rector Rules for Symfony

See available Symfony rules

Install

This package is already part of rector/rector package, so it works out of the box.

All you need to do is install the main package, and you're good to go:

composer require rector/rector --dev

Use Sets

To add a set to your config, use Rector\Symfony\Set\SymfonySetList class and pick one of constants:


use Rector\Config\RectorConfig;
use Rector\Symfony\Set\SymfonySetList;

return RectorConfig::configure()
    ->withSymfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml')
    ->withSets([
        SymfonySetList::SYMFONY_62,
        SymfonySetList::SYMFONY_CODE_QUALITY,
        SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION,
    ]);

Configuration

Provide Symfony XML Service List

Some rules like StringFormTypeToClassRector need access to your Symfony container dumped XML. It contains list of form types with their string names, so it can convert them to class references.

How to add it? Check your var/cache/ directory and find the XML file for your test env. Then add it in rector.php:

use Rector\Config\RectorConfig;

return RectorConfig::configure()
    ->withSymfonyContainerXml((__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');

That's it! Now you can run the StringFormTypeToClassRector and get your form classes converted safely.


Provide Symfony PHP Container

Some rules like AddRouteAnnotationRector require additional access to your Symfony container. The rule takes container service "router" to load metadata about your routes.

use Rector\Config\RectorConfig;
use Rector\Symfony\Bridge\Symfony\Routing\SymfonyRoutesProvider;
use Rector\Symfony\Configs\Rector\ClassMethod\AddRouteAnnotationRector;
use Rector\Symfony\Contract\Bridge\Symfony\Routing\SymfonyRoutesProviderInterface;

return RectorConfig::configure()
    ->withSymfonyContainerPhp(__DIR__ . '/tests/symfony-container.php')
    ->registerService(SymfonyRoutesProvider::class, SymfonyRoutesProviderInterface::class);

The tests/symfony-container.php should provide your dependency injection container. The way you create the container is up to you. It can be as simple as:

// tests/symfony-container.php

use App\Kernel;

require __DIR__ . '/bootstrap.php';

$appKernel = new Kernel('test', false);
$appKernel->boot();

return $appKernel->getContainer();

The version of your Symfony can be quite old. Public methods are stable from Symfony 2 to through 6 and the router have not changed much. The AddRouteAnnotationRector rule was tested and developed on Symfony 2.8 project.


Note: in this case, container cache PHP file located in /var/cache/<env>/appProjectContainer.php is not enough. Why? Few services require Kernel to be set, e.g. routes that are resolved in lazy way. This container file is only dumped without Kernel and would crash with missing "kernel" error. That's why the rule needs full blown container.


Learn Rector Faster

Rector is a tool that we develop and share for free, so anyone can save hundreds of hours on refactoring. But not everyone has time to understand Rector and AST complexity. You have 2 ways to speed this process up:

Both ways support us to and improve Rector in sustainable way by learning from practical projects.