zur Navigation, zum Inhalt, zur Suche

Die Nadel im Heuhaufen, oder andersrum?

Bild vergrößern

PHP ist super. Schnell, einfach zu lernen und meist macht es auch das, was man erwartet. Nur manchmal nerven die Inkonsistenzen, was Parameter von Funktionen angeht. Und das gewaltig.

Erst vorgestern habe ich einen gewaltigen Bug im Code eines Projektes gefunden, weil 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 . 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 6?


Foto: Hay von guldfisken

Dir gefällt dieser Artikel? Dann erzähle doch anderen davon.



6 Kommentare

  1. Andreas sagt:

    Hallo Benjamin!
    Interesseanter Artikel. Ich habe unter http://www.coder3k.com/artikel-23.html meine Gedanken dazu gebloggt. Wäre nett wenn Du den vielleicht bei Dir verlinken könntest, so von Programmierer zu Programmierer :-)

  2. 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.

    • Benni sagt:

      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.

  3. Christian sagt:

    Mein Liebling ist immer noch explode() wo _aus historischen Gruenden_ beide Parameter getauscht werden koennen!



Kommentar schreiben