
Erinnern Sie sich an den einst so beliebten Beitrag: „
PHP: Ein Fraktal schlechten Designs “? Als ich es zum ersten Mal las, arbeitete ich an einem dummen Ort mit vielen veralteten PHP-Projekten. Sie ließ mich fragen, ob ich gehen und etwas völlig anderes als das Programmieren machen sollte.
Zum Glück konnte ich bald meinen Arbeitsplatz wechseln, und was noch wichtiger ist, PHP konnte sich ab der Version 5. * "leicht" weiterentwickeln. Und heute möchte ich mit diesem Artikel Menschen ansprechen, die entweder nicht mehr in PHP programmieren oder in Legacy-Projekten stecken.
Spoiler: Heute ist PHP, wie fast jede Programmiersprache, voller Mängel. Viele Grundfunktionen haben immer noch inkonsistente Signaturen, Konfigurationseinstellungen sind verwirrt, es gibt immer noch viele Entwickler, die beschissenen Code schreiben, weil er in ihrem aktuellen Projekt nicht anders funktioniert oder weil sie nichts anderes wissen.Heute möchte ich einen Blick auf die gute Seite werfen: Konzentrieren wir uns darauf, was sich geändert hat und wie sauberer und gepflegter PHP-Code geschrieben wird. Ich möchte Sie bitten, einige Minuten lang Vorurteile abzubauen.
Danach können Sie sich PHP genauso vorstellen wie zuvor. Obwohl Sie höchstwahrscheinlich überrascht sein werden, welche Verbesserungen PHP in den letzten Jahren vorgenommen hat.
TL DR
- PHP wird aktiv entwickelt, jedes Jahr wird eine neue Version veröffentlicht
- Die Leistung aus der PHP 5-Ära verdoppelt sich, wenn nicht sogar verdreifacht
- Es gibt ein äußerst aktives Ökosystem von Frameworks und Bibliotheken
- In den letzten Jahren wurden PHP viele neue Funktionen hinzugefügt, und die Sprache entwickelt sich weiter.
- Werkzeuge wie statische Analysegeräte haben sich in den letzten Jahren stark weiterentwickelt und entwickeln sich weiter.
Kurze Geschichte
Ein kurzer Blick auf den PHP-Release-Zyklus. Die aktuelle Version ist PHP 7.3 und
Version 7.4 wird Ende 2019
erwartet . PHP 8.0 wird die nächste Version nach 7.4 sein. Beginnend in der späten Ära von PHP 5. * hat das Team der Betreuer versucht, einen jährlichen Veröffentlichungszyklus aufrechtzuerhalten, und es hat sich in den letzten vier Jahren sehr gut entwickelt.
Im Allgemeinen wird jede neue Version zwei Jahre lang aktiv unterstützt und erhält ein weiteres Jahr mit „Sicherheitskorrekturen“. Ziel ist es, PHP-Entwickler zu motivieren, die Version auf dem neuesten Stand zu halten: Das jährliche Anwenden kleiner Updates ist viel einfacher als beispielsweise das Wechseln von 5.4 auf 7.0.
Einen aktualisierten Kalender mit Supportdaten für verschiedene Versionen von PHP finden Sie
hier .
Schließlich war PHP 5.6 die letzte Version des 5. * -Zweigs und 7.0 die nächste. Wenn Sie wissen möchten, was mit PHP 6 passiert ist, können Sie sich den PHP Roundtable-
Podcast anhören.
Lassen Sie uns nun einige häufige Missverständnisse über modernes PHP entlarven.
PHP-Leistung
In Tagen von Version 5. * Die PHP-Leistung war bestenfalls ... durchschnittlich. In Version 7.0 wurden jedoch wesentliche Teile des PHP-Kerns von Grund auf neu geschrieben, was zu einer zwei- bis dreifachen Leistungssteigerung führte.
Aber Worte sind nicht genug. Schauen wir uns die Tests an. Glücklicherweise haben andere Leute viel Zeit damit verbracht, die PHP-Leistung zu bewerten. Ich glaube,
Kinsta hat eine schöne aktualisierte Liste.
Ab Version 7.0 steigt die Leistung nur noch. So sehr, dass PHP-Webanwendungen eine vergleichbare und in einigen Fällen bessere Leistung aufweisen als Webframeworks in anderen Sprachen. Schauen Sie sich
diese umfangreiche Testsuite an.
Natürlich werden PHP-Frameworks C und Rust nicht übertreffen, aber sie sind viel besser als Rails oder Django und mit ExpressJS vergleichbar.
Rahmen und Ökosystem
Apropos Frameworks: PHP ist nicht mehr auf WordPress beschränkt. Ich kann Ihnen als professioneller PHP-Entwickler sagen: WordPress ist keineswegs ein Vertreter des modernen Ökosystems.
Im Allgemeinen gibt es zwei Haupt-Frameworks für Webanwendungen:
Symfony und
Laravel . Und ein paar kleinere: Zend, Yii, Cake, CodeIgniter usw. Wenn Sie jedoch wissen möchten, wie moderne PHP-Entwicklung aussieht, ist es eine gute Wahl, eine der beiden größten kennenzulernen.
Beide Frameworks (Symfony und Laravel) verfügen über ein großes Ökosystem an Paketen und Produkten. Von Verwaltungspanels und CRM bis hin zu eigenständigen Paketen (im Original - „eigenständige Pakete“), von CI bis zu Profilern sowie zahlreichen Diensten wie Web-Socket-Servern, Warteschlangenmanagern und Zahlungsintegration. Ehrlich gesagt zu viel, um alles aufzulisten.
Diese Frameworks sind jedoch für die direkte Entwicklung vorgesehen. Wenn Sie nur Ihre Inhalte verwalten müssen, werden Plattformen wie WordPress und CraftCMS immer besser.
Eine Möglichkeit, den aktuellen Status des PHP-Ökosystems zu messen, besteht darin, sich Packagist anzusehen, das Hauptpaket-Repository für PHP. Es wächst exponentiell. Mit ~ 25 Millionen Downloads pro Tag können wir zu Recht sagen, dass das PHP-Ökosystem nicht mehr die Schwäche ist, die es früher war.
Schauen Sie sich dieses Diagramm an, das die Anzahl der Pakete und Versionen im Zeitverlauf zeigt. Es kann auch auf
der Packagist-Website gefunden werden .

Neben Anwendungsframeworks und CMS haben in den letzten Jahren auch asynchrone Frameworks zugenommen.
Diese Frameworks und Server, die in PHP oder anderen Sprachen geschrieben sind, ermöglichen die Verwendung von wirklich asynchronem PHP. Beispiele sind
Swoole ,
Amp und
ReactPHP .
Seit wir in die asynchrone Welt eingetreten sind, sind Dinge wie Web-Sockets und Anwendungen mit vielen E / A-Operationen in der PHP-Welt wirklich relevant geworden.
Die interne Mailingliste - ein Ort, an dem führende Entwickler über die Sprachentwicklung diskutieren - sprach auch über das Hinzufügen von libuv zum Kernel. Für diejenigen, die libuv nicht kennen, ist dies dieselbe Bibliothek, die Node.js verwendet, um die gesamte Asynchronität sicherzustellen.
Sprache selbst
Obwohl Async und Warten noch nicht verfügbar sind, wurden in den letzten Jahren viele Verbesserungen an der Sprache selbst vorgenommen. Hier ist eine unvollständige Liste der neuen Funktionen in PHP:
- Pfeilfunktionen
- Union Operator mit null
- Eigenschaften
- Typisierte Eigenschaften
- Bediener auspacken
- Jit Compiler
- Externe Funktionsschnittstelle
- Anonyme Klassen
- Rückgabetypdeklaration
- Moderne Kryptographie
- Generatoren
- Viel mehr
Während wir über Sprachfunktionen sprechen, wollen wir auch das Thema ansprechen, wie sich die Sprache heute entwickelt. Es gibt ein Team von freiwilligen Betreuern, die die Sprache weiterentwickeln, während die Community auch RFCs anbieten kann.
Diese RFCs werden dann auf der internen Mailingliste besprochen, die auch im Internet gelesen werden kann. Bevor eine neue Sprachfunktion hinzugefügt wird, muss abgestimmt werden. Nur RFCs mit einer Mehrheit der Stimmen, mindestens ⅔ aller Wähler, dürfen in den Kern aufgenommen werden.
Ungefähr 100 Personen nehmen an der Abstimmung teil, und es ist nicht erforderlich, über jeden RFC abzustimmen. Zu der Gruppe von Personen, die die Möglichkeit haben zu wählen, gehören natürlich auch die Betreuer, da sie eine Codebasis unterhalten müssen. Zusätzlich gibt es eine Gruppe, deren Mitglieder einzeln aus der PHP-Community ausgewählt wurden. Diese Gruppe besteht aus PHP-Dokumentationsbetreuern, Autoren großer PHP-Projekte und prominenten Entwicklern aus der PHP-Community.
Obwohl der größte Teil der Entwicklung auf freiwilliger Basis erfolgt, wurde einer der wichtigsten PHP-Entwickler, Nikita Popov, kürzlich von JetBrains beauftragt, die Sprache in Vollzeit zu bearbeiten. Ein weiteres Beispiel ist die Linux Foundation, die kürzlich beschlossen hat, in das Zend Framework zu investieren. Solche Arbeiten und Akquisitionen garantieren Stabilität für die Zukunft von PHP und seine Entwicklung.
Toolkit
Neben dem Kern selbst haben wir in den letzten Jahren eine Zunahme der Werkzeuge um ihn herum festgestellt. Statische Psalmanalysatoren wie die von Vimeo,
Phan und
PHPStan .
Diese Tools analysieren Ihren PHP-Code statisch und melden typische Fehler, mögliche Fehler usw. In gewissem Sinne kann die von ihnen bereitgestellte Funktionalität mit TypeScript verglichen werden
(Anmerkung des Übersetzers: Statische Analysatoren erweitern die Fähigkeit der Sprache, dadurch nach Fehlern / Defekten zu suchen TS verbessert die Sprache bedingt zusätzlich zu JS) , obwohl die PHP-Sprache derzeit nicht transpilierbar ist, sodass eine benutzerdefinierte Syntax nicht zulässig ist.
Obwohl wir uns immer noch auf Dockblocks und das Schreiben verlassen müssen,
erwähnte Rasmus Lerdorf, der Erfinder von PHP,
die Idee, dem Kernel einen statischen Analysemechanismus hinzuzufügen. Diese Aufgabe birgt viel Potenzial, ist aber in Bezug auf die Arbeitskosten enorm.
In Bezug auf die Umsetzung ist anzumerken, dass versucht wurde, die PHP-Syntax nicht auf Kernelebene, sondern auf Ebene der in JavaScript implementierten Benutzerbibliotheken zu erweitern. Ein Projekt namens
Pre macht genau das: Es ermöglicht Ihnen, die neue PHP-Syntax zu verwenden, die in regulären PHP-Code eingebunden ist.
Obwohl sich dieser Ansatz in der JavaScript-Welt bewährt hat, kann er in PHP nur dann Geld verdienen, wenn IDE und statische Analyse ordnungsgemäß unterstützt werden. Dies ist eine sehr interessante Idee, aber es ist noch ein langer Weg, bis sie als Mainstream bezeichnet werden kann.
Abschließend
Trotz alledem können Sie sich PHP als eine schreckliche Sprache vorstellen. Er hat definitiv seine Fehler und ein 20-jähriges Erbe, aber ich kann zuversichtlich sagen, dass ich gerne mit ihm zusammenarbeite.
Damit kann ich zuverlässige, gepflegte und qualitativ hochwertige Software erstellen. Die Kunden, für die ich arbeite, sind genau wie ich mit dem Endergebnis zufrieden.
Trotz der Tatsache, dass Sie bei der Arbeit mit PHP immer noch sehr schlechten Code schreiben können, würde ich sagen, dass dies eine gute Wahl für die Webentwicklung ist, wenn es richtig verwendet wird.
Stimmen Sie nicht zu? Schreiben Sie in Kommentaren warum!