Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Helpers.php

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

Helpers

Namespace

VariableAnalysis\Lib

Code

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;
}
RSS feed
Powered by Drupal