Wieso hat PHP einen so schlechten Ruf?
Ich habe seit über 20 Jahren immer wieder mal mit PHP (3,4,5) zu tun. Ich habe mich immer wieder über PHP geärgert.
3 war noch sehr rudimentär, sobald man ausgefallenere Funktionen benötigte, nahm man besser gleich Perl mit über 32000 Erweiterungsmodulen auf CPAN.
Auch in 4 gab es noch große Lücken bei den Funktionalitäten. Wir haben damals ein größeres Projekt in PHP programmiert, und mussten immer noch bei vielen Dingen auf Perl zurückgreifen.
In 5 war dann mehr Funktionalität enthalten, so daß die Rückgriffe auf Perl allmählich überflüssig wurden. Aber dafür zeigte sich, daß PHP sich wie ein Urwald entwickelte: Viele Funktionen gab es doppelt, manches war "objektorientiert", manches nicht, selbst innerhalb einunddesselben Moduls. Am allerschlimmsten: Fehlende Typsicherheit und merkwürdige Autocasts, dazu keine Variablendeklaration. Dadurch kann ein Tippfehler zu einer tagelangen Suchorgie nach der Ursache eines Bugs führen. UTF gab es auch nur mit Sonderfunktionen - für eine europaweit eingesetzte Applikation ein Unding.
Fragte man in den Foren bei einem Problem die Entwickler um Hilfe, wurde man oft mit der Erklärung abgespeist, daß die darunter liegenden nativen Bibliotheken an dem Fehler schuld seien.
PHP ist nämlich nicht, wie Java, ein eigenständiges System, sondern, wie Perl, eine Abstraktionsschicht. Für die Funktionalitäten werden die APIs der auf dem System installierten Libraries genutzt. Ändert sich die API, versagt PHP, wenn es nicht rechtzeitig angepaßt wurde.
Ohne eiserne Disziplin läßt sich aufgrund dieses Wildwuchses mit PHP nicht sauber programmieren. Beteiligte Entwickler müssen sich auf einen gemeinsamen Standard einigen, sonst ist das Programm unwartbar.
Ich bin dann vor über einem Jahrzehnt bei der Webentwicklung auf Java umgestiegen, das alle diese Probleme nicht aufweist und dazu ein sehr viel größeres Potential von Erweiterungen (maven!) mitbringt. Hier muß man durchgehend objektorientiert programmieren und ohne Deklaration gibt es keine Variablen. Die Disziplin wird erzwungen, alle Entwickler müssen sich dran halten, sonst wird das programm gar nicht erst kompiliert.
Ob sich die Dinge in PHP7 gebessert haben, habe ich dann nicht mehr geprüft.