in src/Fixers/ClientUpgradeFixer/RpcMethod.php [147:184]
private function settersFromArgumentArray(Tokens $tokens, int $index): array
{
$setters = [];
$legacyArraySyntax = $tokens[$index]->isGivenKind(CT::T_ARRAY_SQUARE_BRACE_OPEN);
$closeIndex = $legacyArraySyntax
? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_SQUARE_BRACE, $index)
: $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, ++$index);
$arrayEntryIndices = $this->getSetterIndiciesFromInlineArray($tokens, $index, $closeIndex, $legacyArraySyntax);
foreach ($arrayEntryIndices as $i => $doubleArrowIndex) {
$keyIndex = $tokens->getNextMeaningfulToken($index);
if (!$tokens[$keyIndex]->isGivenKind(T_CONSTANT_ENCAPSED_STRING)) {
continue;
}
$setterName = 'set' . ucfirst(trim($tokens[$keyIndex]->getContent(), '"\''));
$tokens->removeLeadingWhitespace($doubleArrowIndex + 1);
$valueEnd = isset($arrayEntryIndices[$i + 1])
? $tokens->getPrevTokenOfKind($arrayEntryIndices[$i + 1], [new Token(',')])
: $closeIndex;
$varTokens = array_slice($tokens->toArray(), $doubleArrowIndex + 1, $valueEnd - $doubleArrowIndex - 1);
// Remove trailing whitespace
for ($i = count($varTokens) - 1; $varTokens[$i]->isGivenKind(T_WHITESPACE); $i--) {
unset($varTokens[$i]);
}
// Remove trailing commas
for ($i = count($varTokens) - 1; $varTokens[$i]->getContent() === ','; $i--) {
unset($varTokens[$i]);
}
// Remove leading whitespace
for ($i = 0; $varTokens[$i]->isGivenKind(T_WHITESPACE); $i++) {
unset($varTokens[$i]);
}
$setters[] = [$setterName, $varTokens];
$index = $valueEnd;
}
return $setters;
}