reflectionProvider = $reflectionProvider; } public function provideMinPhpVersion() : int { return PhpVersionFeature::DEPRECATE_INSENSITIVE_CONSTANT_NAME; } public function getRuleDefinition() : RuleDefinition { return new RuleDefinition('Changes case insensitive constants to sensitive ones.', [new CodeSample(<<<'CODE_SAMPLE' define('FOO', 42, true); var_dump(FOO); var_dump(foo); CODE_SAMPLE , <<<'CODE_SAMPLE' define('FOO', 42, true); var_dump(FOO); var_dump(FOO); CODE_SAMPLE )]); } /** * @return array> */ public function getNodeTypes() : array { return [ConstFetch::class]; } /** * @param ConstFetch $node */ public function refactor(Node $node) : ?Node { $constantName = $this->getName($node); if ($constantName === null) { return null; } $uppercasedConstantName = \strtoupper($constantName); // is system constant? if (\in_array($uppercasedConstantName, self::PHP_RESERVED_CONSTANTS, \true)) { return null; } // constant is defined in current lower/upper case if ($this->reflectionProvider->hasConstant(new Name($constantName), null)) { return null; } // is uppercase, all good if ($constantName === $uppercasedConstantName) { return null; } if (\strpos($uppercasedConstantName, '\\') !== \false || \strpos($uppercasedConstantName, '(') !== \false || \strpos($uppercasedConstantName, "'") !== \false) { return null; } $node->name = new FullyQualified($uppercasedConstantName); return $node; } }