![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/friendsofphp/php-cs-fixer/src/Tokenizer/ |
<?php declare(strict_types=1); /* * This file is part of PHP CS Fixer. * * (c) Fabien Potencier <[email protected]> * Dariusz Rumiński <[email protected]> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer\Tokenizer; use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; /** * Collection of Transformer classes. * * @author Dariusz Rumiński <[email protected]> * * @internal */ final class Transformers { /** * The registered transformers. * * @var list<TransformerInterface> */ private array $items = []; /** * Register built in Transformers. */ private function __construct() { $this->registerBuiltInTransformers(); usort($this->items, static fn (TransformerInterface $a, TransformerInterface $b): int => $b->getPriority() <=> $a->getPriority()); } public static function createSingleton(): self { static $instance = null; if (!$instance) { $instance = new self(); } return $instance; } /** * Transform given Tokens collection through all Transformer classes. * * @param Tokens $tokens Tokens collection */ public function transform(Tokens $tokens): void { foreach ($this->items as $transformer) { foreach ($tokens as $index => $token) { $transformer->process($tokens, $token, $index); } } } /** * @param TransformerInterface $transformer Transformer */ private function registerTransformer(TransformerInterface $transformer): void { if (\PHP_VERSION_ID >= $transformer->getRequiredPhpVersionId()) { $this->items[] = $transformer; } } private function registerBuiltInTransformers(): void { static $registered = false; if ($registered) { return; } $registered = true; foreach ($this->findBuiltInTransformers() as $transformer) { $this->registerTransformer($transformer); } } /** * @return \Generator<TransformerInterface> */ private function findBuiltInTransformers(): iterable { /** @var SplFileInfo $file */ foreach (Finder::create()->files()->in(__DIR__.'/Transformer') as $file) { $relativeNamespace = $file->getRelativePath(); $class = __NAMESPACE__.'\\Transformer\\'.('' !== $relativeNamespace ? $relativeNamespace.'\\' : '').$file->getBasename('.php'); yield new $class(); } } }