Hello,
PHP ist eine Scheißsprache, ja, und mit dem Verstreuen von ein wenig funktionalem Zucker wird sie nicht angenehmer. ;)
"The arguments that PHP is an ugly language are half-truths, PHP only produces ugly code if you suck at coding and don’t care how you go about things, it’s easy to keep PHP code clean if you care."
Es gibt Dinge in PHP, die mit einem Lächeln beim nächsten Update besser sein könnten:
* $php_errormsg muss global sein, damit man damit sinnvoll arbeiten kann
* private Funktionen (also solche in Funktionen) sind hilfreich
* kleine Fehler, wie die Belegung bei $php_errormsg bei Benutzung von flock(LOCK_NB)
müssen beseitigt werden
* Fehlermeldungen (zur Zeit sind sie nur textuell) sollten zumindest mit einer eindeutigen
Fehlernummer beginnen, dann könnte man besser auf Fehler reagieren
* Die Verarbeitung von Post-Parametern zu Arrays sollte konsequent eingehalten werden
<input type="image"> liefert nahezu unbrauchbare Variablennamen "feld_x", "feld_y",
statt dass "feld[x]=wert" und feld[y]=wert" geliefert werden. Das würde auch
"image[1]" als Namen des Elementes möglich machen, das würde dann "image[1][x]" und
"image[1][y] liefern, und nicht der y-wert den x-wert überschreiben...
* fclose() muss wieder auch das Unlocken übernehmen, so wie es jede vernünftige Sprache tut
und außerdem das Handle auf false zurücksetzen, sodass man nach einem fclose($fp) nicht mit
einem if($fp) auf einen Hammer läuft...
usw, usw.
Ich habe in den 16 Jahren, in denen ich PHP benutze zwei Fehler beseitigt bekommen durch die Bengels von PHP, ohne dass sie gemurrt haben. Bei zwei weiteren haben sie mir unverschämte Antworten gschickt, sie aber dann beim überübernächsten Release doch beseitigt.
Und zwei habe ich noch hängen. Einen (den mit <image> haben sie gerade mal wieder abgelehnt.
Wünschwenswert wäre außerdem einUnit-Konzept, wie es z.B. Turbo-Pascal hat. Dort kann man Funktionen in einer weiteren Unit überschreiben. Wenn man trotzdem diejenige aus einer anderen geladenen benutzen will, muss man eben einen qualifizierten Bezeichner angeben "system~substr()" wenn ich mir in meiner Unit selber ein "substr()" gebastelt habe (bitte nur als Beispiel".
PHP ist einfach nicht konsquent!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg