function Helpers::findFunctionCallArguments
*
Parameters
File $phpcsFile: * @param int $stackPtr * * @return array<int, array<int>>
3 calls to Helpers::findFunctionCallArguments()
- Helpers::getVariablesInsideCompact in vendor/
sirbrillig/ phpcs-variable-analysis/ VariableAnalysis/ Lib/ Helpers.php - * Return the variable names and positions of each variable targetted by a `compact()` call. * *
- VariableAnalysisSniff::processCompact in vendor/
sirbrillig/ phpcs-variable-analysis/ VariableAnalysis/ Sniffs/ CodeAnalysis/ VariableAnalysisSniff.php - * Called to process variables named in a call to compact(). * *
- VariableAnalysisSniff::processVariableAsPassByReferenceFunctionCall in vendor/
sirbrillig/ phpcs-variable-analysis/ VariableAnalysis/ Sniffs/ CodeAnalysis/ VariableAnalysisSniff.php - *
File
-
vendor/
sirbrillig/ phpcs-variable-analysis/ VariableAnalysis/ Lib/ Helpers.php, line 335
Class
Namespace
VariableAnalysis\LibCode
public static function findFunctionCallArguments(File $phpcsFile, $stackPtr) {
$tokens = $phpcsFile->getTokens();
// Slight hack: also allow this to find args for array constructor.
if ($tokens[$stackPtr]['code'] !== T_STRING && $tokens[$stackPtr]['code'] !== T_ARRAY) {
// Assume $stackPtr is something within the brackets, find our function call
$stackPtr = self::findFunctionCall($phpcsFile, $stackPtr);
if ($stackPtr === null) {
return [];
}
}
// $stackPtr is the function name, find our brackets after it
$openPtr = $phpcsFile->findNext(Tokens::$emptyTokens, $stackPtr + 1, null, true, null, true);
if ($openPtr === false || $tokens[$openPtr]['code'] !== T_OPEN_PARENTHESIS) {
return [];
}
if (!isset($tokens[$openPtr]['parenthesis_closer'])) {
return [];
}
$closePtr = $tokens[$openPtr]['parenthesis_closer'];
$argPtrs = [];
$lastPtr = $openPtr;
$lastArgComma = $openPtr;
$nextPtr = $phpcsFile->findNext([
T_COMMA,
], $lastPtr + 1, $closePtr);
while (is_int($nextPtr)) {
if (self::findContainingOpeningBracket($phpcsFile, $nextPtr) === $openPtr) {
// Comma is at our level of brackets, it's an argument delimiter.
$range = range($lastArgComma + 1, $nextPtr - 1);
$range = array_filter($range, function ($element) {
return is_int($element);
});
array_push($argPtrs, $range);
$lastArgComma = $nextPtr;
}
$lastPtr = $nextPtr;
$nextPtr = $phpcsFile->findNext([
T_COMMA,
], $lastPtr + 1, $closePtr);
}
$range = range($lastArgComma + 1, $closePtr - 1);
$range = array_filter($range, function ($element) {
return is_int($element);
});
array_push($argPtrs, $range);
return $argPtrs;
}