Ich schreibe bald eine Klausur (so richtig auf Papier). Und da sind keine Handbücher oder Funktionsreferenzen erlaubt. Das befinde ich jetzt erstmal für großen Schwachsinn, weil es total an der Realität vorbeigeht. So. Nun habe ich mal eine kleine Übersicht erstellt, wie die Needle/Haystack-Reihenfolge bei den meistgenutzten Funktionen ist. Durch die Hilfe der IDE ist man ja nicht gezwungen, sich das merken zu müssen. Naja, beim stöbern im PHP Handbuch ist mir nun aufgefallen, dass mein Gefühl der total willkürlichen Reihenfolge gar nicht zutreffend war ;-). Wenn man sich mal ein paar PHP-Basher anhört, ist das ja auch das erste Argument. Schauen wir einfach mal:
String-Funktionen
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] ) mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
Die Reihenfolge gilt entsprechend auch für die iconv_ und mb_ – Funktionen.
Array-Funktionen
bool array_key_exists ( mixed $needle , array $haystack ) mixed array_search ( mixed $needle , array $haystack [, bool $strict ] ) bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
Was fällt auf? Bei den String-Funktionen befindet sich der $haystack immer an erster Stelle, bei den Array-Funktionen kommt die $needle immer zuerst. Also gar nicht so tragisch. Wenn man sich jetzt noch eine anständige Eselsbrücke bildet, kann man sich das sehr gut behalten.
Was man sich merken muss, ist dann bloß noch ob Unterstrich oder nicht: in_array vs. strpos. Aber das hat man eh drauf. Also alles garnicht so schlimm wie immer propagiert wird.
Wenn ich mich recht entsinne, sind die Reihenfolgen der Parameter den Funktionsvorbildern aus der C Standardlibrary geschuldet – man wollte eben deren Signatur 1:1 übernehmen, um niemanden zu verwirren, der von C auf PHP migriert.
Insofern eigentlich eine gute Absicht mit verschmerzbaren, aber eben sehr leicht bashbaren Nebenwirkungen. BTW: echte Klausuren über PHP zu schreiben, finde ich eigentlich echt ne gute Sache. Praxisausrichtung ahoi.
Mir gings dadrum dass es keine Praxisrelevanz hat, wenn ich die Parameterreihenfolge von Funktionen auswendig rauskloppen muss.
Am Rande: Typo in der Überschrift „Highstack“…
Hoffentlich hats noch keiner gelesen ;) Danke.
Zu spät :D siehe http://www.phpblogstars.de/
Dann mehr ;) : „garnicht zutreffen“ -> gar nicht zutreffend
Ist das keine OpenBook Prüfung?
Wir schreiben unsere Java Prüfungen auch immer auf Papier.. etwas seltsam auf 17-20 Seiten drei vier Klassen zu verteilen =) Aber man gewöhnt sich dran…
bei str_replace ist der Heuhaufen aber nicht vorne..