1.2.89. Buried Assignation

Those assignations are buried in the code, and placed in unexpected situations.

They are difficult to spot, and may be confusing. It is advised to place them in a more visible place.

<?php

// $b may be assigned before processing $a
$a = $c && ($b = 2);

// Display property p immeiately, but also, keeps the object for later
echo ($o = new x)->p;

// legit syntax, but the double assignation is not obvious.
for($i = 2, $j = 3; $j < 10; $j++) {

}
?>

1.2.89.1. Suggestions

  • Extract the assignation and set it on its own line, prior to the current expression.

  • Check if the local variable is necessary

1.2.89.2. Specs

Short name

Structures/BuriedAssignation

Rulesets

All, Analyze

Exakat since

0.8.4

PHP Version

All

Severity

Minor

Time To Fix

Slow (1 hour)

Precision

Very high

Examples

XOOPS, Mautic

Available in

Entreprise Edition, Exakat Cloud