E0039 reports property reads on values that can be null. It is the null-property member of Phanalist’s bounded formal verification family (E0031-E0043). The family shares a Z3-backed engine that encodes path conditions and values, so a finding comes with a solver-backed counterexample rather than a heuristic guess.
if, switch, match, isset(), and short-circuit
conditions?->) is treated as safe@var, and return contractsE0039 shares the model limits, loop bounds, and interprocedural behavior described in E0031.
rules:
E0039:
php_version: "8.4"
check_nullability: true
See E0031 for the shared model limits, unknown_policy behavior, and
per-code configuration.