Se non riesci a concatenare i metodi, non praticare il concatenamento dei metodi.
$model = Model::find($id);
if ($model === null) {
... // handle error
}
$model->loadAttributes();
Questo è probabilmente il modo meno incline agli errori per farlo. Se il caso zero è previsto nel normale corso dell'operazione, non utilizzare il sistema di eccezione per gestirlo.
PHP 7 aggiunge un operatore coalescente null ??
, ma non un operatore di chiamata del metodo di propagazione null (ad esempio ?.
in C #). Con un operatore di questo tipo , una chiamata $a?->b()
potrebbe essere equivalente a $a === null ? $a->b() : null
.
Un idioma che a volte potresti vedere sta assegnando la variabile all'interno della condizione:
if (($model = Model::find($id)) !== null) {
$model->loadAttributes();
} else {
... // handle error
}
Questo stile ha più senso in altre lingue dove ciò restringerebbe anche l'ambito della variabile assegnata al condizionale, e quando non vi è alcuna gestione degli errori - se il valore di ritorno è nullo, non c'è niente da fare.