"sort" liefert ein "bool" – warum auch nicht?

Post von realloc | Einsortiert in Meckerecke am 4. November 2006 | Keine Kommentare

OK, die Überschrift ist “ausgeliehen” ;-) . Eines der Bücher in meinem Bücherschrank ist von Steve Maguire und hat den Titel “Nie wieder Bugs!”. Der Untertitel “Die Kunst der fehlerfreien C-Programmierung” verleitet vielleicht manche zu einem Lächeln, wenn man erfährt, daß das Buch von der “Microsoft® PRESS” ist und das Steve für MS gearbeitet hat oder immer noch arbeitet. Aber Steve weiß wirklich viel und sehr genau, was bei C nicht stimmt. Es scheint so, daß PHP viele seiner Warzen von C geerbt hat.

Das Kapitel, dessen Überschrift ich mir geliehen habe, handelt von getchar () und deren unglücklich gewählten Rückgabeparameter. Die Funktion liefert ein int, obwohl der Name uns signalisiert, daß uns die Funktion ein char liefern wird. Was ist daran so problematisch? Nun, schlägt getchar () fehl, liefert die Funktion FALSE und ein Konstukt wie putchar (getchar ()); ist dann einfach falsch. Das wiederum bringt mich zu dem Problem mit sort () in PHP.

Wie alle ihre Schwesterfunktionen arbeitet sort () direkt auf dem übergebenen array und liefert bei Erfolg TRUE oder FALSE, wenn etwas schief gelaufen ist. So ist also print_r (sort ($arr)); nicht unbedingt falsch … aber es legt die Vermutung nahe, daß der Autor den Inhalt des arrays ausgeben wollte, aber stattdessen die (Miß-)Erfolgsmeldung auf den Bildschirm schreibt. Aber, um die Liste nicht hier enden zu lassen, legt PHP hier noch folgende Punkte nach: Die Funktion arbeitet nicht nur auf dem Original, es ändert auch die Schlüssel der einzelnen Elemente und sie gilt als undefiniert, wenn die Werte der einzelnen Elemente unterschiedliche Typen haben. Wenn man sich überlegt, wie läßig PHP ansonsten bei der Typisierung von Variablen ist …

Möglicherweise interessiert Dich auch...

Einen Kommentar schreiben