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?

Share this:

Hallo, ich heiße Benjamin Hofmann und mir gehört dieses Blog. Wenn du mehr über mich erfahren willst kannst du das auf dieser Seite tun. Ich bin natürlich auch auf Twitter, Facebook und Google+ zu finden.

7 comments, add your’s.

Andreas

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

    Hallo Andreas,

    der Trackback ist angekommen und hier im Artikel natürlich verlinkt

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.

    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.

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

    Das hatte ich bisher gar nicht bemerkt, dass das möglich ist

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.

One Trackback

  1. By Mit PHP suchen | Coder3k.com on 20.02.2010 at 09:55

    […] interessanten Post habe ich heute auf ajaveeb […]

Leave a comment