Eine große grüne Wiese mit einigen Heustapeln, die mit Stöcken und Planen zusammengehalten werden.

Die Nadel im Heuhaufen, oder andersrum?

Erst vorgestern habe ich einen gewaltigen Bug im Code eines Projektes gefunden, weil PHP die Parameter anders erwartet hat, als ich sie angegeben habe. Daraufhin folgte ein Tweet und die Erkenntnis, dass es oftmals keine Gemeinsamkeiten gibt in der Parameterfolge von Funktionen.

Als Beispiel habe ich strpos() zu nennen, welches zuerst den Heuhaufen erwartet und dann erst die Nadel. Das Gegenbeispiel dafür ist in_array(), wo man zuerst die Nadel angibt und dann den Heuhaufen, in dem gesucht werden soll.

Wovon ich hier eigentlich spreche? Von Suchfunktionen auf diverse Typen in PHP. Mal gibt man zuerst das an, wo gesucht werden soll und ein andermal das, wonach gesucht werden soll. Das ist eindeutig doof und führt zu Verwirrungen. Man kann zwar behaupten, dass Funktionen, die Strings durchsuchen immer die gleiche Reihenfolge nutzen und die für Arrays auch, aber warum hat man sich hier nicht von Anfang an Gedanken gemacht und das angeglichen. Wäre das so schwer gewesen?

Nun gut, jetzt weiß ich es besser und passe auf, was wohin kommt. Auch trübt dies nicht meine Freude an der Programmiersprache an sich, aber eventuell macht sich ja nochmal jemand Gedanken darüber. Vielleicht für PHP 6?

8 Kommentare

  1. Du hast natürlich recht mit Deiner Kritik, dass die inkonsistenten Parameter-Reihenfolgen in PHP nicht schön sind. Daran wird sich aber mit Sicherheit auch in PHP 6 nichts ändern, weil das einen Bruch in der Rückwärtskompatibilität bedeutet. Unzählige Programmierer müssten unzählige Zeilen Code in ziemlich vielen Anwendungen ändern: viele Fehler und große Schmerzen wären dabei vorprogrammiert. Deshalb muss man in PHP mit solchen Sünden der Vergangenheit einfach leben.

    1. Hallo Stefan,

      um ehrlich zu sein bin ich sehr überrascht von dir hier in meinem kleinen unbekannten Blog einen Kommentar zu lesen. Immerhin bist du wohl einer der bekanntesten deutschen PHP-Entwickler. Danke jedenfalls für den Kommentar und du hast auch Recht. Die Abwärtskompatibilität ist in PHP ein wichtiger Faktor, den ich bei meinem Beitrag übersehen habe.

  2. Ich arbeite mich grad in PHP ein und finde auch, dass es einige Vorteile hat. Allerdings hab ich bestimmte „Inkonsistenzen“ auch schon festgestellt, dass ist wahrscheinlich dann auch bei jeder Programmiersprache der Fall.

Kommentare sind geschlossen.