src/Fixer/FunctionNotation/ImplodeCallFixer.php
protected function applyFix(\SplFileInfo $file, Tokens $tokens)
    {
        $functionsAnalyzer = new FunctionsAnalyzer();

        foreach ($tokens as $index => $token) {
            if (!$tokens[$index]->equals([T_STRING, 'implode'], false)) {
                continue;
            }

            if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) {
                continue;
            }

            $argumentsIndices = $this->getArgumentIndices($tokens, $index);

            if (1 === \count($argumentsIndices)) {
                $firstArgumentIndex = key($argumentsIndices);
                $tokens->insertAt($firstArgumentIndex, [
                    new Token([T_CONSTANT_ENCAPSED_STRING, "''"]),
                    new Token(','),
                    new Token([T_WHITESPACE, ' ']),
                ]);

                continue;
            }

            if (2 === \count($argumentsIndices)) {
                list($firstArgumentIndex, $secondArgumentIndex) = array_keys($argumentsIndices);

                // If the first argument is string we have nothing to do
                if ($tokens[$firstArgumentIndex]->isGivenKind(T_CONSTANT_ENCAPSED_STRING)) {
                    continue;
                }
                // If the second argument is not string we cannot make a swap
                if (!$tokens[$secondArgumentIndex]->isGivenKind(T_CONSTANT_ENCAPSED_STRING)) {
                    continue;
                }

                // collect tokens from first argument
                $firstArgumentEndIndex = $argumentsIndices[key($argumentsIndices)];
                $newSecondArgumentTokens = [];
                for ($i = key($argumentsIndices); $i <= $firstArgumentEndIndex; ++$i) {
                    $newSecondArgumentTokens[] = clone $tokens[$i];
                    $tokens->clearAt($i);
                }

                $tokens->insertAt($firstArgumentIndex, clone $tokens[$secondArgumentIndex]);

                // insert above increased the second argument index
                ++$secondArgumentIndex;
                $tokens->clearAt($secondArgumentIndex);
                $tokens->insertAt($secondArgumentIndex, $newSecondArgumentTokens);
            }
        }
    }
protected function applyFix(\SplFileInfo $file, Tokens $tokens)
    {
        $functionsAnalyzer = new FunctionsAnalyzer();

        foreach ($tokens as $index => $token) {
            if (!$tokens[$index]->equals([T_STRING, 'implode'], false)) {
                continue;
            }

            if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) {
                continue;
            }

            $argumentsIndices = $this->getArgumentIndices($tokens, $index);

            if (1 === \count($argumentsIndices)) {
                $firstArgumentIndex = key($argumentsIndices);
                $tokens->insertAt($firstArgumentIndex, [
                    new Token([T_CONSTANT_ENCAPSED_STRING, "''"]),
                    new Token(','),
                    new Token([T_WHITESPACE, ' ']),
                ]);

                continue;
            }

            if (2 === \count($argumentsIndices)) {
                list($firstArgumentIndex, $secondArgumentIndex) = array_keys($argumentsIndices);

                // If the first argument is string we have nothing to do
                if ($tokens[$firstArgumentIndex]->isGivenKind(T_CONSTANT_ENCAPSED_STRING)) {
                    continue;
                }
                // If the second argument is not string we cannot make a swap
                if (!$tokens[$secondArgumentIndex]->isGivenKind(T_CONSTANT_ENCAPSED_STRING)) {
                    continue;
                }

                // collect tokens from first argument
                $firstArgumentEndIndex = $argumentsIndices[key($argumentsIndices)];
                $newSecondArgumentTokens = [];
                for ($i = key($argumentsIndices); $i <= $firstArgumentEndIndex; ++$i) {
                    $newSecondArgumentTokens[] = clone $tokens[$i];
                    $tokens->clearAt($i);
                }

                $tokens->insertAt($firstArgumentIndex, clone $tokens[$secondArgumentIndex]);

                // insert above increased the second argument index
                ++$secondArgumentIndex;
                $tokens->clearAt($secondArgumentIndex);
                $tokens->insertAt($secondArgumentIndex, $newSecondArgumentTokens);
            }
        }
    }
protected function applyFix ( \ SplFileInfo $ file , Tokens $ tokens ) { $ functionsAnalyzer = new FunctionsAnalyzer ( ) ; foreach ( $ tokens as $ index => $ token ) { if ( ! $ tokens [ $ index ] -> equals ( [ T_STRING , 'implode' ] , false ) ) { continue ; } if ( ! $ functionsAnalyzer -> isGlobalFunctionCall ( $ tokens , $ index ) ) { continue ; } $ argumentsIndices = $ this -> getArgumentIndices ( $ tokens , $ index ) ; if ( 1 === \ count ( $ argumentsIndices ) ) { $ firstArgumentIndex = key ( $ argumentsIndices ) ; $ tokens -> insertAt ( $ firstArgumentIndex , [ new Token ( [ T_CONSTANT_ENCAPSED_STRING , "''" ] ) , new Token ( ',' ) , new Token ( [ T_WHITESPACE , ' ' ] ) , ] ) ; continue ; } if ( 2 === \ count ( $ argumentsIndices ) ) { list ( $ firstArgumentIndex , $ secondArgumentIndex ) = array_keys ( $ argumentsIndices ) ; // If the first argument is string we have nothing to do if ( $ tokens [ $ firstArgumentIndex ] -> isGivenKind ( T_CONSTANT_ENCAPSED_STRING ) ) { continue ; } // If the second argument is not string we cannot make a swap if ( ! $ tokens [ $ secondArgumentIndex ] -> isGivenKind ( T_CONSTANT_ENCAPSED_STRING ) ) { continue ; } // collect tokens from first argument $ firstArgumentEndIndex = $ argumentsIndices [ key ( $ argumentsIndices ) ] ; $ newSecondArgumentTokens = [ ] ; for ( $ i = key ( $ argumentsIndices ) ; $ i <= $ firstArgumentEndIndex ; ++ $ i ) { $ newSecondArgumentTokens [ ] = clone $ tokens [ $ i ] ; $ tokens -> clearAt ( $ i ) ; } $ tokens -> insertAt ( $ firstArgumentIndex , clone $ tokens [ $ secondArgumentIndex ] ) ; // insert above increased the second argument index ++ $ secondArgumentIndex ; $ tokens -> clearAt ( $ secondArgumentIndex ) ; $ tokens -> insertAt ( $ secondArgumentIndex , $ newSecondArgumentTokens ) ; } } }
{@inheritdoc}
{