Rolf B: Repository Objekte aus DB abspeichern

Beitrag lesen

Hallo MB,

es ist völlig ok, wenn Du bei einer fehlgeschlagenen Suche null zurückgibst. Das machen viele so.

Alternativen gibt es mannigfaltig:

  • eine Exception in den Himmel schießen und darauf hoffen, dass irgendwo ein try-catch darauf wartet, sie einzufangen. Aber Exceptions sollten nicht für fachliche Fehlersituationen eingesetzt werden, sondern für technische.

  • FALSE zurückgeben. Viele PHP APIs machen das so. Mich schaudert es jedesmal, ich halte das für eine der schlechteren Entscheidungen von good ol' Rasmus.

  • Ein Array mit zwei Elementen zurückgeben: return [ $success, $result ]; und als list() emfangen:
    list($success, $user) = $user_repo->findByPseudo( 'mb' );
    Das war ein Scherz, lass das sein.

  • Zwei getrennte Werte zurückzugeben macht man aus meiner Sicht besser mit einem Objekt. Du kannst eine Klasse QueryResult erfinden und ihr zwei Eigenschaften geben: Success und Result. Success ist der Erfolg der Abfrage, und Result ist nur gefüllt wenn Success auf true steht.
    $userResult = $user_repo->findByPseudo( 'mb' );
    if ($userResult->Success) { ...code, verwende $userResult->Result... }

Nichts davon ist so kompakt und simpel wie eine einfache null-Rückgabe. Auch wenn Tony H. das für den Milliarden-Dollar Fehler seines Lebens hält...

Rolf

--
sumpsi - posui - clusi