Wie ein running Gag zieht sich das teils mehr, teils weniger qualifizierte Genörgel über PHP durchs Forum. Ich finde man sollte mal Nägel mit Köpfen machen und in einem Thread diskutieren, was die wahren Gründe sind PHP für Applikationsentwicklung abzulehnen. Sicher hat der eine oder andere seine eigenstpersönlichen Gründe, nichts von PHP zu halten, aber es gibt auch einige wirklich gute und sachliche Argumente zum Thema, wo PHP einfach Grenzen gesetzt sind. Ich werf einfach mal einige in den Raum:
PHP ist ein Script, und das kann es auch nicht verbergen. Ursprünglich ist PHP als Templating Scriptsprache für html-Ausgabe entwickelt worden. die Oldies beherrschen zum Teil noch die short_open_tag Scriptweise, in einer Webseite Bits und Pieces von PHPCode elegant unterzubringen, um http://www./ mit dynamischen Inhalten zu versehen.
Wenn man nicht mit PHP als Programmiersprache konfrontiert wurde, so wie viele arme Seelen anno dunnemals mit Basic, sondern es als PHP - Hypertext Preprocessor kennengelernt hat, dann staunt man heutzutage zuweilen darüber, was PHP alles zugemutet wird.
Besonders seltsam muten dann die vielen CMS in PHP an, die doch letztlich nichts anders sind als aufgeblasene Scripte um mit horrendem Aufwand Inhalte zu formatieren. Das Sessionhandling hat auch etwas von "halt doch mal die Daten, mit meinem Alzheimer weiss ich beim nächsten Pageview sonst nicht mehr was du willst".
Es ist schon spassig, das marktführende Produkte wie typo3 dann die Sache auf die Spitze treiben und in einem aufgeblähten Templating Script(PHP) ein geschachteltes Templating Script (TypoScript) implementieren, weil vielen garnicht mehr klar ist, wo die wirklichen Stärken von PHP liegen,
A propos Stärken, OOP ist sicher keine Stärke von PHP. Aus einer Vielzahl von Gründen. Ganz weit voran: EIne Lampp Umgebung schreit an sich nach konsequenter Umsetzung einer REST Architektur, obengenannte Krücken wie Cookies oder SessionHandling versuchen dann eine persistente Applikation zu emulieren, aber letztlich bleibt der ganze Ablauf prozedural.
Am Ende jedes Scriptablaufes sind die verwendeten Klassen zu serialisieren, um dann beim nächsten Aufruf wieder neu instantiiert und mit den aktuellen Daten populiert zu werden. Eigentlich ein gräusliger Overhead, und einfach schlechte Architektur, oder?
Die schon länger mit PHP-"OOP" gestraften werden sich noch an katastrophale Anfangsprobleme erinnern, die bei deserialisieren von Objekten einfach die Daten unter den Tisch fallen liessen. Nein, dass sieht Oberflächlich nach OOP aus, hat aber in Realität ausser einer OOP-artigen API nichts damit zu tun.
Hochfliegende Planungen, Application Server in PHP zu realisieren machen mir schlichtweg Angst.
Soll das heissen, PHP ist schlecht?
Nein, man sollte nur keinen Spachtel benutzen um Holz in Form zu sägen. Ich finde es bedauerlich, dass die PHP-Entwickler seit längerer Zeit schon ein von Anfang an verlorenes Rennen angefangen haben, um PHP als vollwertige Programmiersprache zu etablieren, anstatt die Stärken von PHP zu betonen und es als eingängige und mächtige Templating-Scriptsprache zu perfektionieren.
Soll das heissen, PHP-Programmierer sind keine Entwickler?
Auch nicht, es nötigt mir sogar einigen Respekt ab, wie es Entwickler schaffen, teilweise beeindruckend gut funktionierende Designs in PHP zu schaffen, aber sie haben da sicher nicht das beste Werkzeug gewählt, und machen sich sicher etliches schwerer, als es sein müsste.
Ein wichtiger Bestandteil des Erfolgs in jeder Arbeit und in jedem Beruf ist, alle seine notwendigen Werkzeuge zu beherrschen, und sie entsprechend geschickt für die anliegende Aufgabe auszuwählen. Alles mit PHP erschlagen zu wollen ist einfach oberflächlich bequem, und nicht einmal sinnvoll. Das Hinzulernen weiterer Sprachen ist weitaus nicht so aufwendig wie man meinen möchte, wenn man erst einmal ein Grundverständnis für Softwarearchitektur entwickelt hat. Es muss ja nicht gleich Java oder C++ sein. Python zum Beispiel stellt eine einfach erlernbare Alternative dar, wenn eine vollwertige Programmiersprache benötigt wird. Von dialekten Abgesehen bietet Python als interpretierte Sprache zwar keinen Performancevorteil, aber bei komplexerer Applikationsarchitektur eröffnen sich etliche Möglichkeiten, auf sauberere Art und weise die geplante Architektur umzusetzen, ohne auf halbgare Workarounds zurückzugreifen.
Wie sind eure Erfahrungen mit PHP? Wo stosst ihr an Grenzen? Haben euch andere Sprachen geholfen, diese Hindernisse besser zu bewältigen?