24.082012

wtfphp revisited oder wie ich Fehler vermeide

Wie in einem älteren Post schon postuliert wurde, hat PHP so seine Tücken. Neben der erwähnten Problemen die eine typlose Sprache mit sich bringt, hat PHP immer noch mit eine Fülle von Inkonsistenzen zu kämpfen.Um einige der bekanntesten Unzulänglichkeiten umschiffen zu können wurde hier eine Liste von bewährten Verfahren und Lösungen zusammen gestellt. Was dort noch nicht eingegangen ist, ist die historisch gewachsene Unsitte das Funktionen und Methoden im Fehlerfall false zurück geben.

Das scheint zwar auf den ersten Blick unproblematisch, doch was aber wenn die entsprechende Methode einen boolean als Rückgabewert hat? Wie kann dann zwischen dem "normalen" false und dem "Fehler" false unterschieden werden?
Einige weichen dann auf die Rückgabe 'null' aus womit das Problem allerdings nur verschoben wird. Noch problematischer wird es, wenn in einer Methode verschieden 'Fehler' auftreten können.

Auch wenn es vielleicht schwer fällt ist es auch in PHP ratsam das Methoden einen fest definierten Rückgabe Typen haben. Das bedeutet, wenn eine Methode z.B. ein Array zurück gibt, dann gibt es 'IMMER' ein Array zurück. Im Zweifelsfall ein leeres. Wenn eine Methode im Normalfall ein Objekt zurück gibt, dann und nur dann sollte sie im Zweifelsfall null zurück geben.

Für zu erwartende Ausnahmen (Fehler) gibt es seit PHP5 Exceptions. Bei Bedarf kann man für verschiedene erwartete Ausnahmen passende Exceptions definieren auf die dann in dem aufrufenden Code passgerecht reagiert werden kann.

Hält man sich an diese Regeln, dann kann man erstens viele Irritationen durch falsche Benutzung von Methoden vermeiden und zweitens führt das zu konsistenterem Code.