1.2.158. Coalesce And Concat

The concatenation operator . has precedence over the coalesce operator ??.

It is recommended to add parenthesis to make this expression explicit.

<?php

// Parenthesis are the right solution when in doubt
echo a . ($b ?? 'd') . $e;

// 'a' . $b is evaluated first, leading ot a useless ?? operator
'a' . $b ?? $c;

// 'd' . 'e' is evaluated first, leading to $b OR 'de'.
echo $b ?? 'd' . 'e';

?>

1.2.158.1. Connex PHP features

1.2.158.1.1. Suggestions

  • Add parenthesis around ?? operator to avoid misbehavior

  • Add parenthesis around the else condition to avoid misbehavior ( ?? ($a . $b))

  • Do not use dot and ?? together in the same expression

1.2.158.1.2. Specs

Short name

Structures/CoalesceAndConcat

Rulesets

All, Analyze, CE, CI-checks, Changed Behavior

Exakat since

1.9.4

PHP Version

All

Severity

Minor

Time To Fix

Quick (30 mins)

Precision

Very high

Available in

Entreprise Edition, Community Edition, Exakat Cloud