in src/Fixers/ClientUpgradeFixer/RpcMethod.php [186:220]
private function settersFromOptionalArgsVar(Tokens $tokens, int $index, string $optionalArgsVar): array
{
$setters = [];
if (!$tokens[$index]->isGivenKind(CT::T_ARRAY_SQUARE_BRACE_OPEN)
&& !$tokens[$index]->isGivenKind(T_ARRAY)) {
return $setters;
}
$closeIndex = $tokens[$index]->isGivenKind(CT::T_ARRAY_SQUARE_BRACE_OPEN)
? $tokens->findBlockEnd(Tokens::BLOCK_TYPE_ARRAY_SQUARE_BRACE, $index)
: $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $index + 1);
$arrayEntryIndices = $this->getSetterIndiciesFromInlineArray($tokens, $index, $closeIndex);
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(), '"\''));
$varTokens = [
new Token([T_VARIABLE, $optionalArgsVar]),
new Token([CT::T_ARRAY_SQUARE_BRACE_OPEN, '[']),
clone $tokens[$keyIndex],
new Token([CT::T_ARRAY_SQUARE_BRACE_CLOSE, ']']),
];
$setters[] = [$setterName, $varTokens];
$valueEnd = isset($arrayEntryIndices[$i + 1])
? $tokens->getPrevTokenOfKind($arrayEntryIndices[$i + 1], [new Token(',')])
: $closeIndex;
$index = $valueEnd;
}
return $setters;
}