PHP Warum ist PHP so verhasst?

kling1 schrieb:
Weil es deutsche PHP Tutorials von Leuten die keine Ahnung haben gibt und alle Anfänger das nachmachen anstatt es vernünftig zu lernen. Und viele Kritikpunkte stammen aus PHP <= 5 Zeiten. ;)

Finde OOP in der aktuellen PHP Version viel angenehmer als mit TypeScript zur Zeit. Finde auch sowas wie Laravel viel eleganter als NestJS zum Beispiel womit wir hier arbeiten.

Das ist mir beim durchstöbern auch am meisten aufgefallen, irgendwie gibt es zu PHP keine wirklichen guten deutschen Tutorials, Bücher oder sonstiges. Hättest du für mich irgendwelche Empfehlungen in Sachen Tutorials, Videos oder Bücher zum Thema PHP?

Zum Thema: Wow, so viele Antworten in kurzer Zeit :daumen:. Für mich als "Außenstehender" ist Node.js irgendwie das neue "Hippster" Werkzeug, aber wie gesagt als Außenstehender ich bin kein professioneller und beruflicher Entwickler. Aber irgendwas muss es ja haben wenn es alle benutzen wollen und benutzen.
 
Madman1209 schrieb:
man muss aber bitte bei dem Artikel auch auf das Datum schauen! Ich würde behaupten in den 9 Jahren seit Erscheinen des Artikels hat sich doch so ein klein wenig was weiterentwickelt
Viele von den Sachen kann man nicht beheben, da sie zu sehr in der Sprache verankert sind. Ist halt wie bei Javascript, man wird den ganzen alten Kram nicht wirklich los, aber man kann die modernen Sachen nehmen und ignoriert die bescheuerten Features wie "==" komplett.


sh. schrieb:
Zum Thema: Wow, so viele Antworten in kurzer Zeit :daumen:. Für mich als "Außenstehender" ist Node.js irgendwie das neue "Hippster" Werkzeug
Das trifft die Sache ganz gut, es gibt durchaus gute Gründe Node.js zu nehmen, aber die Popularität ist auch sehr durch Trends beeinflusst. Und es wird sicher mehr über Node.js geredet in Vergleich zum tatsächlichen Marktanteil. Es gibt viele Technologien mit denen man Webserver schreiben kann, von den etwas "altmodischeren" wie Java und C# über das "ehemalige Hipster Framework" Ruby on Rails zu PHP oder dann so Neulingen wie Elixir oder Go.
 
Zuletzt bearbeitet:
sh. schrieb:
Das ist mir beim durchstöbern auch am meisten aufgefallen, irgendwie gibt es zu PHP keine wirklichen guten deutschen Tutorials, Bücher oder sonstiges. Hättest du für mich irgendwelche Empfehlungen in Sachen Tutorials, Videos oder Bücher zum Thema PHP?

Zum Thema: Wow, so viele Antworten in kurzer Zeit :daumen:. Für mich als "Außenstehender" ist Node.js irgendwie das neue "Hippster" Werkzeug, aber wie gesagt als Außenstehender ich bin kein professioneller und beruflicher Entwickler. Aber irgendwas muss es ja haben wenn es alle benutzen wollen und benutzen.
Würde jetzt nicht speziell PHP Bücher nehmen. Einfach allgemein Clean Code und Design Patterns bzw. ist ja teil von Clean Code lernen etc.. FDas gelernte läßt sich dann in PHP ansich so verwenden. Ansonsten halt die PHP Doku selbst oder die Doku der Pakete die man verwendet.. wenn man da Hilfe zu bestimmten Sachen benötigt.

Ansonsten würde ich auch immer ein Framework nutzen. Laravel bitet sich da an, da die Doku echt zum besten im IT Umfeld gehört.

Auf laracasts.com findet man auch viele gute Videotutorials dazu.
 
  • Gefällt mir
Reaktionen: GroMag und sh.
sh. schrieb:
Das ist mir beim durchstöbern auch am meisten aufgefallen, irgendwie gibt es zu PHP keine wirklichen guten deutschen Tutorials, Bücher oder sonstiges. Hättest du für mich irgendwelche Empfehlungen in Sachen Tutorials, Videos oder Bücher zum Thema PHP?
Die Sprache in der IT ist Englisch. Wenn du irgendwas auf deutsch liest, bist du darauf angewiesen, dass irgendwer exakt und sinnvollständig das Ganze eindeutscht. In der Regel kannst du das Vergessen. Was ich für sinnvoll halte ist, dass nach dem Verstehen von Grundlagen der Programmierung, man sich durchaus direkt mal mit der offiziellen Doku beschäftigen kann. Lesen welche Features eine Sprache und ihre Bibliotheken haben und überlegen wo das hilfreich sein könnte und eine Demo dazu programmieren.
Tutorials und sonstige bringen oft vergleichsweise wenig um tiefer ins Thema zu kommen. Da hangelst du dich an dem Tutorial ab und arbeitest anhand der meist engen Vorgaben.


kling1 schrieb:
Ansonsten würde ich auch immer ein Framework nutzen. Laravel bitet sich da an, da die Doku echt zum besten im IT Umfeld gehört.
Ich würde nun wieder dazu raten Frameworks immer nur begründet einzusetzen und nie einfach "immer". Gerade am Anfang sollte man sich ersteinmal mit der Basis einer Sprache inkl. der Standardbibliotheken beschäftigen. Es kommen Imho viel zu oft Frameworks zum Einsatz, wo die entsprechenden Features eigentlich schon vor Jahren in die Basis integriert wurden. Zudem bedeuten Frameworks immer, dass man nicht nur die eigene Codebasis warten muss, sondern auch das Framework.
 
  • Gefällt mir
Reaktionen: pcBauer, RalphS, DeusoftheWired und eine weitere Person
Also ich entwickle seit gut 10 Jahren unter anderem mit PHP und bin echt zufrieden. Aber es ist einiges an Kultur nötig, es ordentlich zu machen und seit PHP 7 hat sich die Performance spürbar verbessert.

Ich entwickle hauptsächlich Templates und WP Plugins und dafür ist es echt perfekt geeignet. An Handlebars, Mustache oder Velocity bin ich TW echt verzweifelt weil es zuwenig Methoden und Funktionen gibt sowie alles irgendwie umständlich ist.

Javascript nutze ich nach wie vor nur im Frontend, das Backend-Entwickeln macht mir persönlich kaum Spaß, egal mit welcher Sprache. Mit PHP gehts einigermaßen, auch weil ich das schon richtig behersche (und nicht umgekehrt).
 
  • Gefällt mir
Reaktionen: GroMag
Ich bin mit PHP zufrieden, bin aber auch schon seit v4.0 oder sowas dabei. v3 und vorher war tatsächlich kaum zu gebrauchen 😉

Damit kann man fast alles machen, Scripts auf der Konsole ebenso wie Web-Irgendwas; Datenbankanbindung ist vielseitig und spielend; wenn was nicht gleich tut gibts extensions und PECL und PEAR...

Klar, wer Mist bauen will, baut Mist, egal in welcher Sprache. Und PHP hatte auch Nachholbedarf; ob der Switch in Richtung OO notwendig war - keine Ahnung -- die Anfänge waren halt auch erstmal nur rangeklatscht und nur wenig zu gebrauchen --- aber fehlende Datentypdeklarationen, Rückgabedatentypen und so weiter, das hat schon über die Zeit gestört.

Andere sehen das sicher anders, aber ich für mein Teil würde nie auf die Idee kommen ausgerechnet Javascript(!) als Webserver zu verwenden. Und dann auch noch ohne klare Abgrenzungen. Das lädt imo nur zu unsauberem Coden ein... soweit es mich angeht wäre es sinnvoller, stattdessen die einzelnen Levels auch sprachlich voneinander abzugrenzen, einfach um nicht nur logische, sondern reale Isolation zu haben und gar nicht in die Verlegenheit kommen zu können, zusammenzuwerfen, was nicht zusammengehört.

Wer natürlich einfach ne App und ein Backend dazu zusammenklicken will... weiß nicht, denke da paßt der Ansatz von node ganz gut für. Und es gibt sicher genug Anwendungsfälle wo man tatsächlich profitiert.

Aber der Otto Normalhans(tm) hat nichts von realtime support. Es nützt ihm nichts wenn die Website mit 100 hits p.a. eine halbe Sekunde schneller pro Aufruf verarbeitet ist. Und es nützt insbesondere dem Anfänger nichts, wenn er einfach irgendwelchen Müll hinklatschen kann und es trotzdem funktioniert. Dann wird er nämlich nichts dabei lernen.
 
  • Gefällt mir
Reaktionen: netzgestaltung und Madman1209
GrinderFX schrieb:
Weil NodeJS so [...] unfassbar viel schneller ist.

Bis du im Real Life ankommst und 90% deines Requests für Datenpingpong mit der Datenbank draufgehen, dann stellste plötzlich fest dass das in der Praxis eher nie ins Gewicht fällt. Die ganzen künstlichen Benchmarks gehen nur auf Verarbeitung von Daten die schon rumkullern, da holt keines mal 10 Sekunden Daten aus der Db um den Binary Tree zu befüllen. Und da oben drauf braucht Php dann vllt 2 Sekunden statt 1 Sekunde bei NodeJs. Das machts dann echt aus ;)
Dass Php 'speicherintensiv' ist - naja, kommt drauf an was man macht. Wenn ich mir https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/php.html so angucke ist Node da aber eher noch schlimmer.

Letztendlich: das einzige was ein Benchmark aussagt ist welche Sprache in diesem speziellen Benchmark schneller ist. Ob das für den eigenen Usecase genauso ist muss man probieren (und oft hat man eh keine Wahl was man nimmt)....
 
  • Gefällt mir
Reaktionen: GroMag, netzgestaltung und Kalsarikännit
PHP 7 hat (dank Facebook) enorm aufgeholt, mit PHP 8 setzt sich dieser positive Trend fort. Es gibt mittlerweile "named parameters", "null coalescing operator" sowie den "nullsafe operator" und sogar einen RFC für Enum-Objekte. Es tut sich also was in der Welt von PHP.

In der Praxis finden diese neuen tollen Features nicht immer Anwendung. Wie bereits geschrieben, haben "damals" viele PHP-Programmierer einfach mal drauflos getippt. Heute stehen die Unternehmen mit einem riesigen Haufen nicht-testbaren Legacy-Code dar, der mit viel Aufwand supported wird (Bugfixing/Features). Heißt, veraltete PHP-Versionen laufen immer noch auf genügend Servern.
Die Code-Qualität in kompilierten Sprachen muss zumindest so gut sein, dass das Ganze noch kompiliert. In PHP läuft "der Scheiß" einfach. Das ist eher negativ zu bewerten.


Alle PHP-eigene Funktionen sind in einem FP-Stil und (oft) auch in einem OOP-Stil verfügbar. Das kann lustig gemischt werden. In der offiziellen Dokumentation finden sich dann spannende Lösungen mit Code-Schnipseln, die gerne mal 10+ Jahre alt sind.
Dazu kommt die Array-Besessenheit der PHP-Community: anstatt mit einfachen DTOs zu arbeiten, werden irgendwelche (verschachtelte) Arrays mit bestimmten Array-Keys verwendet; das trifft auch auf viele große Libraries zu.

Dazu kommt die berühmt berüchtigte PHP/C++ API mit diesen wirren Bezeichnungen wie:
- reset(): gibt das erste Element in einem Array zurück
- strstr(): ersetzt einen template String (z. B. für Translations)
- str_replace: macht das selbe wie oben, benötigt aber zwei individuelle Arrays für den Abgleich
- ...

Die Standard-Library ist ohne Wrapper eigentlich nicht verwendbar: Bei Fehlern werden idR. "null"/"false" zurückgebenen. Heißt, es gibt keine Exceptions bei Fehlern.
Libraries wie https://github.com/thecodingmachine/safe helfen hier.


PHP hängt im Vergleich mit z. B. Kotlin gefühlt 10 Jahre zurück: Während sich PHPler noch über "Array-Schema-Annotations" die Köpfe heiß reden, sind Dinge wie API-Streams, Generics, Erweiterung von Standardtyps (z.B. für DSL-Features), async oder Data-/Record-Objekte in anderen Sprachen eine Selbstverständlichkeit.

PHP war "damals" geeignet, um eine Homepage (mit Gästebuch! :D) zu machen, und in der Praxis gibt es noch viele legacy PHP-Anwendungen die Supported werden. Das war es dann aber auch schon. Man kann "alles" mit PHP machen, aber im Vergleich zu anderen Sprachen und deren Ökosystem ist es halt viel mehr Aufwand.

Java/C# sind auf Dauer besser für die Nerven und die Gehälter sind höher :)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ###Zaunpfahl### und KitKat::new()
Um nochmal auf die Fragestellung im Topictitel einzugehen: ich kenne als Entwickler niemanden der PHP "hasst". Diese doch recht krasse Bezeichnung kann man für vieles Verwenden, aber nicht für Programmiersprachen. Ich würde eher sagen, dass eine Programmiersprache weniger gern genutzt wird. Das hängt aber primär vom Einsatzzweck ab. Und PHP hat diesbezüglich absolut seine Daseinsberechtigung und wird diese auch nicht verlieren. In meinem Umfeld kommt PHP in 90% der Fälle zum Einsatz. Die restlichen 10% teilen sich Java und Perl. Verhasst ist keine der Sprachen, die Entwickler bevorzugen nur manche eher.
 
Also ich kann Leute, dir auf node oder PHP pochen wirklich nicht ernst nehmen.
Rocket bzw. Rust sind doch das einzig wahre.

Sarkasmus, aber irgendwie auch nicht.

Bei einer Enterprise-Applikation würde ich ehrlich nicht mehr mit Javascript (am besten noch ohne TypeScript) oder php daherkommen. Hält die Supportkosten im Zaum.
 
KitKat::new() schrieb:
Also ich kann Leute, dir auf node oder PHP pochen wirklich nicht ernst nehmen.
Rocket bzw. Rust sind doch das einzig wahre.

Wenn du in der komfortablen Lage bist neu anzufangen... Aber versuch mal Entwickler dafür zu bekommen, mal davon ab dass das teuer wird was die Entwickler angeht :D
 
Lustig finde ich ja, das PHP ausgerechnet Javascript/node.js entgegengesetzt wird. Ich finde beide Sprachen (PHP & Javascript) eher bescheiden.
Dabei darf man aber auch nicht vergessen, woher diese beiden Sprachen kommen. PHP war ja nie dafür gedacht irgendwelche großen Webseiten zu bauen. Es war ursprünglich mehr oder weniger ein kleines Template-Tool mit dem man schnell etwas zusammenhacken konnte. Dafür ist es auch bis heute gut geeignet. Und ja. PHP hat insbesondere in den letzten Versionen mächtig aufgerüstet. Trotzdem hat es halt viele Altlasten und die Aufrüstung hat nur dazu geführt, das sie jetzt da sind wo andere schon längst waren.
Das heißt: Du kannst inzwischen auch größere Sites bauen. Nur ist das eben nicht die Stärke von PHP. Dort kann es sich nicht von anderen Lösungen entscheidend absetzen.

Auch Javascript hat seinen Ursprung in einem etwas kleineren Maßstab. Nämlich im Browser. Für kleine Skripte! Für mehr war es nie gedacht. Inzwischen wurde es natürlich aufgebohrt und lässt sich auch gut für andere Sachen verwenden. Aber auch hier hast Du natürlich mit Altlasten zu kämpfen.
Dazu scheint insbesondere das node.js-Umfeld doch recht volatil zu sein. Man gucke sich nur die vielen Javascript-Frameworks an. Gefühlt erscheint ja jede Woche irgendein Neues. Irgendein anderes verschwindet dafür (und man kann als Entwickler nur hoffen, das man da nicht aufs falsche Pferd gesetzt hat).
Nicht zu vergessen die Abhängigkeitshölle die dazu führt, das Du selbst bei einem eigentlich kleinen Projekt Dir irgendwie über die zahlreichen Abhängigkeiten erst mal Dutzende von Packages reinziehst, wo Du gar nicht mehr überblicken kannst, was Du Dir da eigentlich alles reinholst und wie es um die Qualität bestellt ist und ob nicht alles bei einem Update Dir auseinanderfällt.

Allerdings: Nicht minder wichtig als die Sprache ist natürlich auch derjenige, der sie einsetzt: Der Programmierer.
Jedes Werkzeug ist eben nur so gut oder so schlecht wie der der es benutzt. Darum sind ja z.B. PHP-Projekte nicht grundsätzlich sch**ße oder so.
Und mir ist es lieber jemand benutzt PHP oder von mir aus auch node.js und weiß aber was er tut und ist sich der Stärken und Schwächen bewusst(!) als jemand der eine vermeintlich bessere Sprache einsetzt und diese aber dann nicht beherrscht.
 
  • Gefällt mir
Reaktionen: RalphS
Der große Vorteil von Javascript in der Webapp Welt ist halt: Man kommt sowieso nicht drumrum. Und das macht es für einen Fullstack Entwickler deutlich einfacher, wenn er im Front- und Backend nur noch eine Sprache hat.
 
foo_1337 schrieb:
Der große Vorteil von Javascript in der Webapp Welt ist halt: Man kommt sowieso nicht drumrum.
Via WebAssembly und ein entsprechendes Framework darum kommt man auch ohne JavaScript zurecht.
z.B. via Go, Rust oder C# (und andere Alternativen)
 
WebAssembly ist Komplementär zu JavaScript bzw. ein Replacement für asm.js. Ich sehe nicht, wie du z.B. Angular, Polymer oder vue.js damit ersetzen würdest.
 
Wenn ich z.B. Yew betrachte, frage ich mich wie ich damit Angular&Co nicht ersetzen könnte.

JS -> Rust+Wasm
React -> Yew
 
Wurde schon vieles gesagt. Aber ein wenig Senf hab ich noch^^.

Ich wurde hier auch mal gesteinigt weil ich PHP für einen Anfänger empfohlen habe.
Seit dem habe ich einiges gelernt und würde für große Backends Kotlin, Typescript empfehlen / verwenden. Aber wie schon gesagt kommt das immer auf den UseCase an...

Trotzdem würde ich meine damalige Meinung nicht ändern. Im Gegensatz zu C#, C++, Java, Kotlin und auch Typescript ist PHP (und auch Javascript, Python, Ruby...) einfach viel zugänglicher.

Bleiben wir jetzt einfach mal bei PHP. Im Netz wurden die gleichen Fragen schon 100x beantwortet. Es gibt gefühlt unendlich Material und man kommt schnell zu Ergebnissen.
Wenn man das z.B. mit Java vergleicht. Da gibt es dann zig sich überladene Methoden die sich nur in Feinheiten unterscheiden und teils viel komplexer und detaillierter sind (Typisierung, Generics, Objekte). Da ist PHP viel simpler aufgebaut.
Diese Komplexität hilft um Sachen exakt und strikt zu machen (Fehler schneller entdecken, Performance). Das ist in großen komplexen Anwendung mit mehreren Entwicklern von Vorteil (Wenn man es richtig einsetzt).
Aber alleine für sein eigenes kleines Hobby Projekt oder zum Einsteig einfach Overkill.

Deswegen würde ich jedem Anfänger empfehlen, außer diejenigen die mit Komplexität überhaupt kein Problem haben, mit etwas einfacherem wie PHP, Python, Javascript anzufangen. Wechseln kann man dann später ohne Probleme immer noch um dann bessere Patterns zu lernen und auch anzuwenden.
Mit PHP ist es halt so das einige Dinge nicht möglich sind weil die Sprache das (noch) nicht bietet.
Und Kotlin zb. ist da viel weiter aber im Verbund mit der riesen Java-Welt auch viel komplexer.

Hier auch nochmals einen Auszug über die Anfänge von PHP
https://www.sitepoint.com/phps-creator-rasmus-lerdorf/
Es war einfach ein kleines simples Projekt um etwas einfacher HTML Seiten dynamisch zu machen. Da hat sich niemand hingehockt und überlegt wie man Pattern in eine Programmiersprache gießt.
 
  • Gefällt mir
Reaktionen: kim88
@KitKat::new() ich bin da selbst zu wenig drin (ich halte mich von allem was mit Frontends zu tun hat fern), aber der Tenor ist da oft, dass man dennoch auf viele js Module zurückgreifen muss, weil es einfach noch sehr viel nicht gibt. Und dann ist halt die Frage, ob man eine größere Applikation damit beginnt oder nicht doch auf was etabliertes zurück greift und nur für bestimmte Teile auf asm.js/wasm zurückgreift.
 

Ähnliche Themen

Zurück
Oben