1.2.146. Class-typed References¶
Class-typee arguments have no need for references. Since they are representing an object, they are already a reference.
In fact, adding the & on the argument definition may lead to error like Only variables should be passed by reference.
This applies to the object type hint, but not the the others, such as int or bool.
<?php
// a class
class X {
public $a = 3;
}
// typehinted reference
//function foo(object &$x) works too
function foo(X &$x) {
$x->a = 1;
return $x;
}
// Send an object
$y = foo(new X);
// This prints 1;
print $y->a;
?>
See also Passing by reference and Objects and references.
1.2.146.2. Connex PHP features¶
1.2.146.2.1. Suggestions¶
Remove reference for typehinted arguments, unless the typehint is a scalar typehint.
1.2.146.2.2. Specs¶
Short name |
Functions/TypehintedReferences |
Rulesets |
|
Exakat since |
1.2.8 |
PHP Version |
All |
Severity |
Minor |
Time To Fix |
Instant (5 mins) |
Precision |
High |
Available in |