MyCLabsMethodCallToEnumConstRector should only refactor according to RuleDefinition

Abierto
#9,956 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@samsonasik ya está trabajando en esto.

Desde el 3/11/2026.

Evaluación

Dificultad
3/5
Tiempo estimado
Medio día
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
php
Área
devtools

Línea de trabajo

Start with the MyCLabsMethodCallToEnumConstRector rule class and its getRuleDefinition() CodeSample, which shows SomeEnum::VALUE()->getKey() becoming SomeEnum::VALUE->name. The report says the rewrite also fires where the enum constructor expects an enum object, causing a TypeError. Reproduce with the linked demo, then find which call sites the rule should skip. Done means the reported case produces no change and the rule's existing tests still pass.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Bug Report

Subject Details
Rector version 2.8.3

Hi,
the rule MyCLabsMethodCallToEnumConstRector should only refactor according to the rule definiton:

public function getRuleDefinition(): RuleDefinition
    {
        return new RuleDefinition('Refactor MyCLabs enum fetch to Enum const', [
            new CodeSample(
                <<<'CODE_SAMPLE'
$name = SomeEnum::VALUE()->getKey();
CODE_SAMPLE

                ,
                <<<'CODE_SAMPLE'
$name = SomeEnum::VALUE->name;
CODE_SAMPLE
            ),
        ]);
    }

Always changing SomeEnum::VALUE() to SomeEnum::VALUE can produce fatal errors like in the example:
Fatal error: Uncaught TypeError: test\A::__construct(): Argument #1 ($evl) must be of type Endroid\QrCode\ErrorCorrectionLevel, string given, called in

Best regards

Minimal PHP Code Causing Issue

https://getrector.com/demo/fd1ed71b-d792-4531-a52a-0679bce0c134

Expected Behaviour

No change

Lenguaje dominante
PHP
Estrellas
10.5k
Forks
742
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de rectorphp/rector

Todos los issues de rectorphp/rector

Issues similares

Más issues de PHP

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.