$first, 'b' => $something & $somethingElse ]; /* testBitwiseAndF */ $a = array( 'a' => $first, 'b' => $something & \MyClass::$somethingElse ); /* testBitwiseAndG */ $a = $something & $somethingElse; /* testBitwiseAndH */ function myFunction($a = 10 & 20) {} /* testBitwiseAndI */ $closure = function ($a = MY_CONSTANT & parent::OTHER_CONSTANT) {}; /* testFunctionReturnByReference */ function &myFunction() {} /* testFunctionPassByReferenceA */ function myFunction( &$a ) {} /* testFunctionPassByReferenceB */ function myFunction( $a, &$b ) {} /* testFunctionPassByReferenceC */ $closure = function ( &$a ) {}; /* testFunctionPassByReferenceD */ $closure = function ( $a, &$b ) {}; /* testFunctionPassByReferenceE */ function myFunction(array &$one) {} /* testFunctionPassByReferenceF */ $closure = function (\MyClass &$one) {}; /* testFunctionPassByReferenceG */ $closure = function ($param, &...$moreParams) {}; /* testForeachValueByReference */ foreach( $array as $key => &$value ) {} /* testForeachKeyByReference */ foreach( $array as &$key => $value ) {} /* testArrayValueByReferenceA */ $a = [ 'a' => &$something ]; /* testArrayValueByReferenceB */ $a = [ 'a' => $something, 'b' => &$somethingElse ]; /* testArrayValueByReferenceC */ $a = [ &$something ]; /* testArrayValueByReferenceD */ $a = [ $something, &$somethingElse ]; /* testArrayValueByReferenceE */ $a = array( 'a' => &$something ); /* testArrayValueByReferenceF */ $a = array( 'a' => $something, 'b' => &$somethingElse ); /* testArrayValueByReferenceG */ $a = array( &$something ); /* testArrayValueByReferenceH */ $a = array( $something, &$somethingElse ); /* testAssignByReferenceA */ $b = &$something; /* testAssignByReferenceB */ $b =& $something; /* testAssignByReferenceC */ $b .= &$something; /* testAssignByReferenceD */ $myValue = &$obj->getValue(); /* testAssignByReferenceE */ $collection = &collector(); /* testAssignByReferenceF */ $collection ??= &collector(); /* testShortListAssignByReferenceNoKeyA */ [ &$a, /* testShortListAssignByReferenceNoKeyB */ &$b, /* testNestedShortListAssignByReferenceNoKey */ [$c, &$d] ] = $array; /* testLongListAssignByReferenceNoKeyA */ list($a, &$b, list(/* testLongListAssignByReferenceNoKeyB */ &$c, /* testLongListAssignByReferenceNoKeyC */ &$d)) = $array; [ /* testNestedShortListAssignByReferenceWithKeyA */ 'a' => [&$a, $b], /* testNestedShortListAssignByReferenceWithKeyB */ 'b' => [$c, &$d] ] = $array; /* testLongListAssignByReferenceWithKeyA */ list(get_key()[1] => &$e) = [1, 2, 3]; /* testPassByReferenceA */ functionCall(&$something, $somethingElse); /* testPassByReferenceB */ functionCall($something, &$somethingElse); /* testPassByReferenceC */ functionCall($something, &$this->somethingElse); /* testPassByReferenceD */ functionCall($something, &self::$somethingElse); /* testPassByReferenceE */ functionCall($something, &parent::$somethingElse); /* testPassByReferenceF */ functionCall($something, &static::$somethingElse); /* testPassByReferenceG */ functionCall($something, &SomeClass::$somethingElse); /* testPassByReferenceH */ functionCall(&\SomeClass::$somethingElse); /* testPassByReferenceI */ functionCall($something, &\SomeNS\SomeClass::$somethingElse); /* testPassByReferenceJ */ functionCall($something, &namespace\SomeClass::$somethingElse); /* testPassByReferencePartiallyQualifiedName */ functionCall($something, &Sub\Level\SomeClass::$somethingElse); /* testNewByReferenceA */ $foobar2 = &new Foobar(); /* testNewByReferenceB */ functionCall( $something , &new Foobar() ); /* testUseByReference */ $closure = function() use (&$var){}; /* testUseByReferenceWithCommentFirstParam */ $closure = function() use /*comment*/ (&$value){}; /* testUseByReferenceWithCommentSecondParam */ $closure = function() use /*comment*/ ($varA, &$varB){}; /* testArrowFunctionReturnByReference */ fn&($x) => $x; $closure = function ( /* testBitwiseAndExactParameterA */ $a = MY_CONSTANT & parent::OTHER_CONSTANT, /* testPassByReferenceExactParameterB */ &$b, /* testPassByReferenceExactParameterC */ &...$c, /* testBitwiseAndExactParameterD */ $d = E_NOTICE & E_STRICT, ) {}; // Issue PHPCS#3049. /* testArrowFunctionPassByReferenceA */ $fn = fn(array &$one) => 1; /* testArrowFunctionPassByReferenceB */ $fn = fn($param, &...$moreParams) => 1; /* testClosureReturnByReference */ $closure = function &($param) use ($value) {}; /* testBitwiseAndArrowFunctionInDefault */ $fn = fn( $one = E_NOTICE & E_STRICT) => 1; /* testIntersectionIsNotReference */ function intersect(Foo&Bar $param) {} /* testDNFTypeIsNotReference */ $fn = fn((Foo&\Bar)|null /* testParamPassByReference */ &$param) => $param; /* testTokenizerIssue1284PHPCSlt280A */ if ($foo) {} [&$a, /* testTokenizerIssue1284PHPCSlt280B */ &$b] = $c; /* testTokenizerIssue1284PHPCSlt280C */ if ($foo) {} [&$a, $b];