Entwickler Brent hat einen Artikel veröffentlicht, der detailliert beschreibt, wie PHP im Jahr 2019 aussieht.
Brent gab zu, dass PHP immer noch einige Probleme hat, wie zum Beispiel, dass viele Kernfunktionen immer noch inkonsistente Methodensignaturen haben und Konfigurationseinstellungen immer noch verwirrend sind, aber in seinen eigenen Worten From Aus Sicht der Entwicklungserfahrung glaubt er, dass PHP eine ausgezeichnete Wahl für die Webentwicklung ist. Mit PHP kann er zuverlässige, wartbare und qualitativ hochwertige Anwendungen erstellen, und sowohl er selbst als auch seine Kunden sind mit den Endergebnissen zufrieden. (Empfohlene Studie: PHP7 Technical Topic)
In dem Artikel konzentriert sich Brent auf die guten Aspekte der Entwicklung von PHP im Laufe der Jahre. Er erklärt anhand mehrerer Punkte, dass „PHP Nr länger Es war eine schreckliche Sprache vor zehn Jahren “:
● PHP wird aktiv weiterentwickelt und jedes Jahr werden neue Versionen veröffentlicht
● Die Leistung verbessert sich nach PHP 5 ständig
● Es gibt ein sehr aktives Sprachökosystem bestehend aus Frameworks, Paketen und Plattformen
● PHP entwickelt sich ständig weiter und in den letzten Jahren wurden viele neue Funktionen hinzugefügt
● In der Vergangenheit wurden verschiedene Entwicklungstools entwickelt. Sie sind über mehrere Jahre ausgereift und wachsen weiter
PHP wird aktiv weiterentwickelt und jedes Jahr werden neue Versionen veröffentlicht
Das aktuelle PHP Version 7.3 wurde im Dezember letzten Jahres veröffentlicht, 7.4 wird voraussichtlich Ende dieses Jahres veröffentlicht. PHP 8.0 wird die nächste Version nach 7.4 sein.
Seit der 5.X-Ära hofft das Kernteam, jedes Jahr eine neue Version zu veröffentlichen, und hat einen solchen Veröffentlichungszyklus in den letzten vier Jahren erfolgreich aufrechterhalten. Normalerweise wird jede neue Version zwei Jahre lang offiziell aktiv unterstützt, gefolgt von einem Jahr ausschließlich mit Sicherheitsupdates, mit dem Ziel, PHP-Entwicklern einen Anreiz zu geben, so weit wie möglich auf dem neuesten Stand zu bleiben.
Weitere spezifische Release- und Wartungszyklen finden Sie in der Einführung auf der offiziellen PHP-Website:
https://www.php .net/supported-versions.php
Wenn Sie sich die Tabelle oben ansehen, stellen Sie möglicherweise fest, dass die Versionsnummer von 5 auf 7 gestiegen ist. Wo ist PHP 6 geblieben?
Übrigens, lasst uns etwas Wissenschaft bekannt machen. Tatsächlich initiierte die PHP-Community bereits 2005 PHP 6. Aufgrund der großen Schwierigkeiten bei der Implementierung von Unicode wurde das Projekt jedoch schließlich nicht freigegeben, und PHP 6 wurde 2010 eingestellt. Obwohl das PHP-6-Projekt eingestellt wurde, wurden viele der implementierten Funktionen in PHP 5 integriert.
PHP 6 wurde eingestellt, aber die vorherige Entwicklung dieser Hauptversion wurde unter dem Namen PHP 6 durchgeführt, daher verwenden viele Referenzmaterialien und Bücher „PHP 6“, um auf diese Version zu verweisen. Die Beamten befürchteten, dass dies nach der Abkehr von PHP 6 zu Verwirrung führen würde, weshalb sie einfach nicht die Versionsnummer von PHP 6.X verwendeten und direkt von 5 auf 7 wechselten.
Einzelheiten finden Sie in der offiziellen Beschreibung:
Leistung nach PHP 5 Bei der kontinuierlichen Verbesserung von
PHP 7.0 wird der Kernteil von PHP komplett neu geschrieben und bringt die neueste Zend-Engine mit, die die PHP-Leistung um das Zwei- bis Dreifache verbessert.
Der Autor zitierte den Benchmark-Test unter https://kinsta.com/blog/php-benchmarks, um diesen Punkt zu veranschaulichen, und wies darauf hin, dass sich seit 7.0 die PHP-Leistung sowie PHP-Webanwendungen und Web-Frameworks verbessert haben in anderen Sprachen Die Leistung ist viel besser als in einigen Fällen. Aber er sagte auch: „Natürlich wird das PHP-Framework nicht besser sein als C und Rust, aber es ist viel besser als Rails oder Django und vergleichbar mit ExpressJS.“
Es gibt sehr aktive Frameworks.“ , Pakete und Plattformen Sprachökologie
Wenn es um PHP-Framework geht, müssen wir WordPress erwähnen, aber der Autor sagte, dass WordPress definitiv nicht das aktuelle PHP-Ökosystem darstellt: „PHP-Framework ist nicht mehr gerecht.“ WordPress.“
Derzeit gibt es zwei Haupt-Frameworks für die Entwicklung von Webanwendungen in PHP: Symfony und Laravel sowie Zend, Yii, Cake und Code Igniter, zusätzlich zu vielen kleineren Frameworks.
Sowohl Symfony als auch Laravel verfügen über riesige Paket- und Software-Ökosysteme, darunter Admin-Panel und CRM, unabhängige Softwarepakete, CI, Analyser, Web-Socket-Server, Warteschlangenmanager und Zahlungsintegrationen usw.
Darüber hinaus sind in den letzten Jahren auch asynchrone PHP-Frameworks entstanden. Swoole, Amp und ReactPHP sind die besten unter ihnen. Es handelt sich um Frameworks und Server, die in PHP oder anderen Sprachen geschrieben wurden, um echtes asynchrones PHP auszuführen.
Der Autor glaubt, dass eine Möglichkeit, den aktuellen Zustand des PHP-Ökosystems zu messen, darin besteht, sich Daten von Packagist, dem Haupt-PHP-Paket-Repository, anzusehen. Anhand des folgenden Trenddiagramms können Sie erkennen, dass die Anzahl der Softwarepakete exponentiell gestiegen ist und derzeit 223.217 Softwarepakete registriert sind und die Gesamtzahl der Installationen 14.827.204.847 erreicht hat. Das PHP-Ökosystem ist nicht mehr so schwach wie zuvor.
Anzahl der verfügbaren Pakete in verschiedenen Versionen
Anzahl der pro Monat installierten Pakete
Darüber hinaus können Sie sich auch die neuesten Daten zu PHP-Nutzungsstatistiken und Marktpositionierung ansehen:
//m.sbmmt.com/toutiao-418943. html
PHP entwickelt sich ständig weiter und in den letzten Jahren wurden viele neue Funktionen hinzugefügt
Async und Wait, zwei stark nachgefragte Funktionen, jedoch nicht noch nicht implementiert, jedoch sind in den letzten Jahren immer wieder neue Funktionen von PHP aufgetaucht und die Sprache selbst wurde in verschiedenen Aspekten verbessert.
Nachfolgend sind einige neue PHP-Funktionen aufgeführt, die viel Aufmerksamkeit erregt haben:
● Kurze Verschlüsse
Kurze Verschlüsse, auch als Pfeilfunktionen bekannt, die ist eine Möglichkeit, kürzere Funktionen in PHP zu schreiben. Abschlüsse können äußerst nützlich sein, wenn sie an Funktionen wie array_map oder array_filter übergeben werden.
// A collection of Post objects $posts = [/* … */]; $ids = array_map(fn($post) => $post->id, $posts);
● Null-Koaleszenzoperator
Null-Koaleszenzoperator, er ähnelt dem ternären Operator, aber der linke Operand verhält sich wie isset, anstatt nur seinen booleschen Wert zu verwenden. Dies macht diesen Operator besonders nützlich für Arrays. Außerdem wird ein Standardwert zugewiesen, wenn die Variable nicht festgelegt ist.
$undefined ?? 'fallback'; // 'fallback' $unassigned; $unassigned ?? 'fallback'; // 'fallback' $assigned = 'foo'; $assigned ?? 'fallback'; // 'foo' '' ?? 'fallback'; // '' 'foo' ?? 'fallback'; // 'foo' '0' ?? 'fallback'; // '0' 0 ?? 'fallback'; // 0 false ?? 'fallback'; // false
● Traits
Trait ist ein Mechanismus zur Wiederverwendung von Code, der einige der Einschränkungen der Einzelvererbung reduzieren kann. Die Semantik der Kombination von Merkmalen mit Klassen definiert eine Möglichkeit, die Komplexität zu reduzieren und typische Probleme im Zusammenhang mit Mehrfachvererbung und Mixins zu vermeiden.
Trait ähnelt einer Klasse, wird jedoch nur zur feinkörnigen und konsistenten Gruppierung von Funktionen verwendet. Es ist eine Ergänzung zur herkömmlichen Vererbung und kann eine horizontale Kombination von Verhaltensweisen erreichen, die für Klassenmitglieder nicht erforderlich sind Nachlass.
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
● Typisierte Eigenschaften
Attribute werden typisiert und Klassenvariablen können Typen definieren, wie zum Beispiel:
class A { public string $name; public Foo $foo; }
● Spread-Operator
Erweiterungsoperator, eine neue Syntax, die Parameter im Aufruf direkt dekomprimieren kann, wie zum Beispiel:
call_user_func_array([$db, 'query'], array_merge(array($query), $params));
Das Array $params kann direkt mit der neuen Syntax erweitert werden:
$db->query($query, ...$params);
● JIT-Compiler: JIT-Unterstützung ist in PHP 8 bestätigt
JIT ist eine Compilerstrategie, die Code als Zwischenzustand ausdrückt, in den er konvertiert wird Architekturabhängiger Maschinencode und wird im laufenden Betrieb ausgeführt. In PHP bedeutet dies, dass die JIT von Zend VM generierte Anweisungen als Zwischendarstellungen behandelt und sie in architekturabhängigem Maschinencode ausführt. Das heißt, es ist nicht mehr Zend VM, das den Code hostet, sondern die zugrunde liegende CPU.
● FFI
Foreign Function Interface, das den Aufruf von C-Funktionen aus reinen Skriptsprachen und die Verwendung von C-Datentypen ermöglicht, um „systemeffizienteren“ Code zu entwickeln. Für PHP eröffnet FFI die Möglichkeit, PHP-Erweiterungen zu schreiben und mit reinem PHP an C-Bibliotheken zu binden.
● Anonyme Klassen
Anonyme Klassen zum Erstellen einfacher Einwegobjekte:
<?php // Pre PHP 7 code class Logger { public function log($msg) { echo $msg; } } $util->setLogger(new Logger()); // PHP 7+ code $util->setLogger(new class { public function log($msg) { echo $msg; } });
● Rückgabetypdeklarationen
Rückgabetyp deklarieren:
<?php function sum($a, $b): float { return $a + $b; } // Note that a float will be returned. var_dump(sum(1, 2)); ?>
Strikter Modus:
<?php declare(strict_types=1); function sum($a, $b): int { return $a + $b; } var_dump(sum(1, 2)); var_dump(sum(1, 2.5)); ?>
● Zeitgenössische Kryptographie
Machen Sie Libsodium zu einer Kernerweiterung. Libsodium ist eine moderne kryptografische Bibliothek bestehend aus Verschlüsselungsalgorithmen, die von Sicherheitsexperten sorgfältig ausgewählt wurden, um Seitenkanal-Schwachstellen zu vermeiden.
● Generatoren
Generatoren bieten eine einfache, bausteinfreie Möglichkeit, Iteratoren zu implementieren.
Verschiedene Entwicklungstools sind in den letzten Jahren ausgereifter geworden und weiter gewachsen
Im letzten Teil analysierte der Autor, dass auch die aktuellen PHP-Entwicklungstools ausgereift sind und weiter gewachsen sind.
Er verwendete als Beispiele statische Analysatoren wie Psalm, Phan und PHPStan. Diese Tools analysieren PHP-Code statisch und melden alle Arten von Fehlern und möglichen Bugs. Die von ihnen bereitgestellte Funktionalität ist bis zu einem gewissen Grad mit der von TypeScript vergleichbar, aber da PHP derzeit kein Transpile bietet, ist eine benutzerdefinierte Syntax nicht zulässig. Dies bedeutet, dass die PHP-Entwicklung auf Dokumentation angewiesen sein muss, aber tatsächlich erwähnte der Erfinder von PHP, Rasmus Lerdorf, einmal die Idee, dem Kern eine statische Analyse-Engine hinzuzufügen.
受到 JavaScript 社区的启发,目前 PHP 也有在进行转换的相关研发,比如项目 Pre,它允许新的 PHP 语法转换为普通的 PHP 代码。虽然这个想法已经在 JavaScript 中被证明可行,但作者认为在 PHP 中,只有先提供了适当的 IDE 和静态分析支持,它才有可能实现。
讲完了 PHP 当前的这些变化,作者最后没有以“PHP 是世界上最好的语言”作结语,相反,他是这样说的:
All that being said, feel free to still think of PHP as a crappy language... I can say in confidence that I enjoy working with it.
话虽如此,但是还要继续认为 PHP 是蹩脚的语言那也是可以的。我可以很自信地说我喜欢 PHP。