PHP | ||
Datum der ersten Version | 1994 | |
---|---|---|
Paradigmen | Imperativ , objektorientiert , funktional , prozedural , reflektierend und interpretiert | |
Autor | Rasmus Lerdorf | |
Entwickler | Die PHP-Gruppe | |
Letzte Version | 8.0.7 (3. Juni 2021) | |
Entwicklungsversion |
7.1.0 RC3 (23. September 2016) 7.4.0 Alpha 1 (13. Juni 2019) 7.4.0 Beta 1 (25. Juli 2019) 7.4.0 RC1 (6. September 2019) 7.4.0 Alpha 2 (26. Juni 2019) 7.4.0 alpha 3 (11. Juli 2019) 7.4.0 Beta 2 (8. August 2019) 7.4.0 Beta 4 (22. August 2019) 7.4.0 RC2 (19. September 2019) 7.4.0 RC3 (3. Oktober 2019) 7.4.0 RC4 (18. Oktober 2019) 7.4.0 RC5 (31. Oktober 2019) 7.4.0 RC6 (14. November 2019) 8.0.0 RC3 (29. Oktober 2020) |
|
Tippen | Dynamisch , Niedrig | |
Beeinflusst von |
C / C ++ Java- Perl |
|
Geschrieben in | VS | |
Betriebssystem | Multi-Plattform | |
Lizenz |
Kostenlose Lizenz : PHP-Lizenz |
|
Webseite | https://secure.php.net | |
Dateierweiterung | php | |
PHP: Hypertext Preprocessor , besser bekannt unter seinem Akronym PHP ( Akronym self-referential ), ist eine freie Programmiersprache , die hauptsächlich verwendet wird, um dynamische Webseiten über einen HTTP-Server zu erstellen, kann aber auch als jede Sprache fungieren , dielokal interpretiert wird. PHP ist eine objektorientierte imperative Sprache .
PHP hat es möglich gemacht, eine große Anzahl berühmter Websites wie Facebook und Wikipedia zu erstellen . Sie gilt als eine der Grundlagen für die Erstellung sogenannter dynamischer Websites, aber auch von Webanwendungen.
PHP ist eine Skriptsprache am häufigsten auf der Serverseite verwendet : in dieser Architektur, der Server interpretiert der PHP - Code der angeforderten Web - Seiten und generieren Code ( HTML , XHTML , CSS zum Beispiel) und Daten ( JPEG , GIF , PNG mit gutem Beispiel ) , die von einem Webbrowser interpretiert und wiedergegeben werden können . PHP kann auch andere Formate wie WML , SVG und PDF generieren .
Es wurde entwickelt, um die Erstellung dynamischer Anwendungen zu ermöglichen, die meistens für das Web entwickelt wurden . PHP wird meistens mit einem Apache- Server gekoppelt, obwohl es auf den meisten HTTP-Servern wie IIS oder nginx installiert werden kann . Diese Kopplung ermöglicht es, Informationen aus einer Datenbank , aus einem Dateisystem (Inhalt von Dateien und der Baumstruktur) oder einfacher aus vom Browser gesendeten Daten abzurufen , um später interpretiert oder gespeichert zu werden.
Es ist eine locker getippte und flexible Sprache und daher für Anfänger leicht zu erlernen, jedoch können dadurch schnell Sicherheitslücken in Anwendungen auftreten. Pragmatisch ist PHP nicht mit Theorie belastet und neigt dazu, den direktesten Weg zu wählen. Der Name der Funktionen (sowie die Übergabe der Argumente) respektiert jedoch nicht immer eine einheitliche Logik, was dem Lernen abträglich sein kann.
Der Einsatz beginnt mit der Bearbeitung von Formularen und dann mit dem Zugriff auf Datenbanken. Der Zugriff auf die Datenbanken ist einfach, nachdem die entsprechenden Module auf dem Server installiert wurden. Die offensichtlichste Stärke dieser Sprache ist, dass sie im Laufe der Zeit die einfache Lösung einst komplizierter Probleme ermöglicht hat und daher zu einem wesentlichen Bestandteil des Unterkunftsangebots geworden ist.
Es ist plattformübergreifend : Sowohl unter Linux als auch unter Windows ist es einfach, denselben Code in einer etwas ähnlichen Umgebung zu erweitern (obwohl wir die Regeln von Verzeichnisbäumen berücksichtigen müssen, die sich ändern können).
Kostenlos, kostenlos, einfach zu bedienen und zu installieren, wie jede Programmiersprache, erfordert diese Sprache ein gutes Verständnis der wichtigsten üblichen Funktionen sowie eine genaue Kenntnis der mit dieser Sprache verbundenen Sicherheitsprobleme.
Die Version 5.3 führt viele neue Funktionen ein: Namespace (Namespace) - grundlegend für die Entwicklung von Erweiterungen zu Bibliotheken und strukturierten Frameworks , die anonymen Funktionen , die Closures usw.
Im Jahr 2018 verwenden fast 80% der Websites die Sprache PHP in ihren verschiedenen Versionen.
Die PHP-Sprache ist seit mehreren Jahren Gegenstand nationaler Treffen, die von AFUP (dem französischen Verband der PHP-Benutzer) organisiert werden, bei denen sich Programmier- und Community-Experten treffen, um über PHP und seine Entwickler zu diskutieren. So organisiert der Verein zwei große Veranstaltungen: das „PHP Forum“, in der Regel zum Jahresende, und die „AFUP Days“, die im ersten Semester gleichzeitig in mehreren Städten stattfinden.
Die Sprache PHP wurde 1994 von Rasmus Lerdorf für seine Website entwickelt . Es war ursprünglich eine Softwarebibliothek in C, die er benutzte, um Besucher zu verfolgen, die kamen, um ihren Lebenslauf zu konsultieren . Durch das Hinzufügen neuer Funktionen verwandelte Rasmus die Bibliothek in eine Implementierung, die in der Lage ist, mit Datenbanken zu kommunizieren und dynamische und einfache Anwendungen für das Web zu erstellen . Rasmus beschloss dann 1995 , seinen Code zu veröffentlichen, damit jeder ihn verwenden und genießen kann. PHP wurde dann PHP / FI (für genannt P ersonal H ome P Alter Tools / F orm I nterpreter ). In 1997 , zwei Studenten, Andi Gutmans und Zeev Suraski , sanierte den Kern von PHP / FI. Diese Arbeit führte ein Jahr später zu Version 3 von PHP, aus der dann PHP: Hypertext Preprocessor wurde . Bald darauf begannen Andi Gutmans und Zeev Suraski, die interne PHP-Engine neu zu schreiben. Es ist diese neue Engine, genannt Zend Engine – das Wort Zend ist die Abkürzung von Ze ev und A nd i – die als Basis für PHP Version 4 diente.
Im Jahr 2002 wurde PHP von über 8 Millionen Websites weltweit verwendet, 2007 von über 20 Millionen und 2013 von über 244 Millionen.
Darüber hinaus ist PHP seit einigen Jahren die am weitesten verbreitete serverseitige Webprogrammiersprache :
Jahr | Marktanteil |
---|---|
2010 | 75% |
2013 | 75% |
2016 | 82% |
Im Jahr 2010 schließlich ist PHP mit einer Penetrationsrate von 57 % die Sprache, in der Open-Source-Software in Unternehmen am häufigsten verwendet wird .
Schon seit Juni 2011und dem neuen PHP-Bereitstellungsprozess läuft der PHP-Bereitstellungszyklus auf ein jährliches Update mit erheblichen funktionalen Änderungen hinaus. Die Lebensdauer eines Zweigs beträgt 3 Jahre, wobei drei Zweige stabil bleiben und gewartet werden (das bedeutet, dass bei der Veröffentlichung einer neuen Version von PHP 5.x Version 5.x-3 nicht mehr unterstützt wird).
Version 8Veröffentlicht am 26. November 2020, diese Hauptversion zeichnet sich vor allem durch die Funktionalität der „ Kompilierung im laufenden Betrieb “ ( Just-in-Time-Kompilierung ) aus.
Version 7.4Version 7.4 wurde veröffentlicht am 20. Februar 2020. Es soll beibehalten werden, bisNovember 2022.
Version 7.4 unterscheidet sich von ihren Vorgängerversionen durch:
Das 6. Dezember 2018, konzentrierte sich die Veröffentlichung von Version 7.3 auf:
Das 30. November 2017, die Version von PHP 7.2, die Zend Engine 2 verwendet , führte eine leistungsfähigere Objektmodellierung , Fehlerbehandlung basierend auf dem Ausnahmemodell sowie Verwaltungsfunktionen für Unternehmen ein. PHP 5 bringt viele neue Funktionen, wie SQLite- Unterstützung sowie Möglichkeiten, XML- Dateien und -Strukturen basierend auf libxml2 zu manipulieren :
Angesichts der anderen Ausrichtung der Sprache als PHP 6 schlagen einige Entwickler vor, die Nachfolgerversion von PHP 5 "PHP 7" statt "PHP 6" zu nennen. Eine Abstimmung unter den Entwicklern bestätigt diesen Vorschlag mit 58 gegen 24 Stimmen.
PHP 7.0.0 veröffentlicht in Dezember 2015.
Die neue Version bietet Code-Optimierung und bietet nach Angaben des Unternehmens Zend eine Leistung, die über die von virtuellen Maschinen wie HHVM hinausgeht . Die externen Benchmarks zeigen eine ähnliche Leistung für PHP HHVM und 7, mit einem leichten Vorteil von HHVM in den meisten Szenarien.
PHP 6 und UnicodeIm Jahr 2005 wurde von Andrei Zmievski das Projekt gestartet, PHP zu einer ursprünglichen Arbeitssprache in Unicode zu machen, die auf der Bibliothek International Components for Unicode (ICU) aufbaut und UTF-16 verwendet, um Zeichenketten in der Engine darzustellen.
Da dies eine große Änderung sowohl in der Funktionsweise der Sprache als auch im von den Benutzern erstellten PHP-Code darstellte, wurde beschlossen, dies in eine neue Version 6.0 mit anderen wichtigen Funktionen zu integrieren, die sich damals in der Entwicklung befanden. Der Mangel an fachkundigen Entwicklern in Unicode sowie die Performance-Probleme durch die Konvertierung von Strings von und nach UTF-16 (im Web-Kontext selten verwendet) haben jedoch dazu geführt, dass die Auslieferung dieser Version immer wieder verschoben wird. Daher wurde 2009 eine Version 5.3 erstellt, die viele Nicht-Unicode-Funktionen enthält, die ursprünglich für Version 6.0 geplant waren, einschließlich der Unterstützung von Namespaces und anonymen Funktionen. ImMärz 2010, wurde das Projekt 6.0, das Unicode integriert, aufgegeben und die Version 5.4 wurde vorbereitet, um die meisten der nicht-unicode-bezogenen Funktionen, die sich noch im 6.0-Zweig befinden, wie Strokes oder das Erweitern von Closures in das Objektmodell, zu integrieren.
Das Projekt ist seitdem zu einem vorhersehbaren (jährlichen) Lieferzyklus übergegangen, der bedeutende, aber begrenzte Fortschritte enthält, während die Rückwärtskompatibilität mit dem vorhandenen PHP-Code so weit wie möglich erhalten bleibt (5,4 im Jahr 2012, 5,5 im Jahr 2013, 5,6 für Sommer 2014 geplant). Schon seitJanuar 2014, wird die Idee einer neuen Hauptversion, die Unicode einführt, aber auf UTF-8 basiert (weitgehend inzwischen zum Webstandard für Unicode geworden) und bestimmte Änderungen erlaubt, die die Abwärtskompatibilität mit altem PHP-Code beeinträchtigen könnten, erneut diskutiert und die RFCs jetzt sortiert sort entsprechend ihrer Implementierung in 5.x (Entwicklungen, die die Abwärtskompatibilität nicht verursachen oder geringfügig beeinträchtigen) oder in der zukünftigen Hauptversion (wichtige Engine-Entwicklungen und Entwicklungen, die eine Abwärtskompatibilität implizieren).
NotierenEs sollte beachtet werden, dass PHP in der Vergangenheit eine Standardkonfiguration hatte, die Flexibilität der Sicherheit vorzog (zB Register Globals, die bis PHP 4.2 standardmäßig aktiviert war). Diese Flexibilität ermöglichte es vielen Entwicklern, PHP zu erlernen, aber die Kehrseite war, dass viele PHP-Anwendungen schlecht gesichert waren. Das Thema wurde von der PHPGroup aufgegriffen, die Standardkonfigurationen eingerichtet hat, die die Sicherheit betonen. Daraus entstand ein Ruf der unsicheren Sprache, ein Ruf der Unsicherheit, der keine mehr hat .
Details zur vollständigen VersionsgeschichteHauptversion | Nebenversion | Unterstützung | Veröffentlichungsdatum | Anmerkungen |
---|---|---|---|---|
1.0 | 1.0.0 | Alte Version, nicht unterstützt | 8. Juni 1995 | Offiziell als "Personal Home Page Tools (PHP Tools)" bezeichnet, persönliche Seitentools. Dies ist das erste Auftreten des Namens "PHP". |
2.0 | 2.0.0 | Alte Version, nicht unterstützt | 12. November 1997 | |
3.0 | 3.0.0 | Alte Version, nicht unterstützt | 6. Juni 1998 | Übergang von einer Person zu einem Entwicklerteam. Zeev Suraski und Andi Gutmans schreiben die Basis dieser Version neu. |
4.0 | 4.0.0 | Alte Version, nicht unterstützt | 22. Mai 2000 | Ein fortgeschritteneres Parsing- System namens Zend Engine wurde hinzugefügt . Diese Engine geht in zwei Stufen der Analyse und dann der Ausführung durch. |
4.1.0 | Alte Version, nicht unterstützt | 10. Dezember 2001 | Stellt superglobals ( $_GET, $_POST, $_SESSIONetc.) | |
4.2.0 | Alte Version, nicht unterstützt | 22. April 2002 | Deaktiviert standardmäßig register_globals. Daten aus dem Netzwerk werden nicht mehr direkt in den globalen Namensraum eingefügt , wodurch die Möglichkeit von Sicherheitslücken verringert wird | |
4.3.0 | Alte Version, nicht unterstützt | 27. Dezember 2002 | Führt zusätzlich zum CGI die CLI ein . | |
4.4.0 | Alte Version, nicht unterstützt | 11. Juli 2005 | Hinzufügen des Handbuchs (Seiten, auf die über den Befehl zugegriffen werden kann man) für die Skripte phpizeund php-config. | |
5.0 | 5.0.0 | Alte Version, nicht unterstützt | 13. Juli 2004 | Zend Engine II mit neuem Objektmodell. |
5.1 | 5.1.0 | Alte Version, nicht unterstützt | 24. November 2005 | Verbesserte Leistung durch Einführung von Kompilierungsvariablen in eine neu gestaltete PHP-Engine. |
5.2 | 5.2.0 | Alte Version, nicht unterstützt | 2. November 2006 | Standardmäßige Aktivierung der Erweiterung "Filter". |
5.3 | 5.3.0 | Alte Version, nicht unterstützt | 30. Juni 2009 | Unterstützung für Namensräume ; Späte statische Bindungen ; Sprungmarken ( begrenztes Goto ); Verschlüsse (Verschlüsse); Native PHP-Archive (phar); zyklischer Referenz- Garbage Collector ; dauerhafte Verbindung mit MySQLi , sqlite3; fileinfo als Ersatz für mime_magic für bessere MIME- Unterstützung hinzugefügt ; Abkürzung für den ternären Operator (?:); anonyme Funktionen ; viele Fehlerbehebungen... |
5.3.3 | Alte Version, nicht unterstützt | 22. Juli 2010 | Einführung von PHP-FPM | |
5,4 | 5.4.0 | Alte Version, nicht unterstützt | 1 st März 2012 | Support - Funktionen ; kurze Tabellensyntax eingeführt; Zugriff auf Tabellenindizes am Funktionsausgang; Schließungen unterstützen $ this; <? = immer verfügbar; Zugriff auf die Attribute eines Objekts aus der Instanziierung; Klasse :: {expr} () Syntax hinzugefügt; Ergänzung des binären Zahlenformats; Verfolgen von Datei-Uploads über die Sitzungserweiterung; Webserver eingebettet in CLI für die Entwicklung; Dtrace- Unterstützung ; Entfernen von magischen Anführungszeichen , safe_mode , register_globals und register_long_array- Erweiterungen . |
5.4.26 | Alte Version, nicht unterstützt | 6. März 2014 | Hinzufügen von ldap_modify_batch () | |
5,5 | 5.5.0 | Alte Version, nicht unterstützt | 20. Juni 2013 | Unterstützung für Generatoren und Coroutinen ; Hinzufügen einer API zu Hash- Passwörtern; Standardintegration des Zend OPcache Cache Systems; viele Fehler behoben; Einstellung des Supports für Windows XP und Windows Server 2003 ; Aktualisierung der GD- Bibliothek ; mysql_-Funktionen gelten nun als obsolet (Schwerpunkt mysqli_ und PDO_MySQL). |
5.5.4 | Alte Version, nicht unterstützt | 19. September 2013 | Verbesserung von fputcsv(). | |
5.5.5 | Alte Version, nicht unterstützt | 17. Oktober 2013 | Neue Funktion opcache_compile_file(), Unterstützung für das GNU Hurd-System, Hinzufügen des MIME-Typs application/pdf im Entwicklungsserver. | |
5.5.6 | Alte Version, nicht unterstützt | 14. November 2013 | Verbesserte Leistung von array_merge () und func_get_args (). | |
5.5.7 | Alte Version, nicht unterstützt | 12. Dezember 2013 | Unterstützung für getallheaders () und MIME-Typen im Entwicklungsserver hinzugefügt, apache_response_headers () hinzugefügt. | |
5.5.10 | Alte Version, nicht unterstützt | 6. März 2014 | Wechsel zu PCRE 8.34. Hinzufügen von ldap_modify_batch () | |
5.5.13 | Alte Version, nicht unterstützt | 29. Mai 2014 | Dem integrierten Entwicklungsserver wurden xsl / xml-MIME-Typen hinzugefügt. | |
5,6 | 5.6.0 | Alte Version, nicht unterstützt | 28. August 2014 | Neue Syntax für Funktionen mit variablen Parametern und Entpacken von Parametern, Import von Funktionen innerhalb von Namespaces , Integration des phpdbg- Debuggers als Standard, Verbesserung der Zip-Erweiterung, akzeptierte Ausdrücke zum Definieren von Konstanten, verbesserte Handhabung von POST-Daten , Unterstützung des Überladens von Operatoren in die Zend Engine, neue magische Methode __debugInfo (), die Debug-Informationen zu Objekten bereitstellt, verschiedene Verbesserungen der Unterstützung von SSL / TLS , Hinzufügen des Exponentiationsoperators " ** », Downloads über 2 GB werden jetzt unterstützt. |
5.6.32 | Alte Version, nicht unterstützt | 26. Okt. 2017 | 3 Fehler behoben (Datum, mcrypt, PCRE) | |
5.6.33 | Alte Version, nicht unterstützt | 4. Januar 2018 | 2 Fehler behoben (GD, Phar) | |
7,0 | 7.0.0 | Alte Version, nicht unterstützt | 3. Dezember 2015 | Verbesserte Leistung dank der "phpng"-Engine (bis zu doppelt so schnell wie PHP 5.6), homogene Unterstützung für 64-Bit-Architekturen, Hinzufügen von Ausnahmen, die das Abfangen schwerwiegender Fehler ermöglichen, Hinzufügen der Operatoren " ?? " (genannt " Null-Coalescing (en ) ") und" <=> "(genannt "kombinierter Vergleich"), Möglichkeit, den von einer Funktion zurückgegebenen Typ sowie die skalaren Typen der Argumente explizit zu deklarieren, Unterstützung für anonyme Klassen ... |
7.0.25 | Alte Version, nicht unterstützt | 26. Okt. 2017 | 14 Fehler behoben. | |
7.0.26 | Alte Version, nicht unterstützt | 23. November 2017 | 18 Fehler behoben. | |
7.0.27 | Alte Version, nicht unterstützt | 4. Januar 2018 | 11 Fehler behoben. | |
7.0.28 | Alte Version, nicht unterstützt | 27. Februar 2018 | Fehlerbehebung. | |
7.0.29 | Alte Version, nicht unterstützt | 29. März 2018 | 1 Fehler behoben. | |
7.0.30 | Alte Version, nicht unterstützt | 26. April 2018 | 4 Fehler behoben. | |
7.0.31 | Alte Version, nicht unterstützt | 19. Juli 2018 | 3 Fehler behoben. | |
7.0.32 | Alte Version, nicht unterstützt | 13. September 2018 | 1 Fehler behoben: Apache2 (XSS) | |
7.0.33 | Alte Version, nicht unterstützt | 6. Dezember 2018 | 5 Fehler behoben: Core, IMAP, Phar | |
7.1 | 7.1.0 | Alte Version, nicht unterstützt | 1 st Dezember 2016 | Nullable Types (in) , Rückgabetyp void, Pseudotyp iterable, Sichtbarkeit von Klassenkonstanten, Verbesserungen list(), mehrere Ausnahmetypen abfangen usw. |
7.1.1 | Alte Version, nicht unterstützt | 19. Januar 2017 | 33 Fehler und Speicheroptimierung von mysqlnd behoben. | |
7.1.3 | Alte Version, nicht unterstützt | 16. März 2017 | 24 Fehler behoben. | |
7.1.11 | Alte Version, nicht unterstützt | 27. Oktober 2017 | 19 Fehler behoben. | |
7.1.12 | Alte Version, nicht unterstützt | 23. November 2017 | 18 Fehler behoben. | |
7.1.13 | Alte Version, nicht unterstützt | 4. Januar 2018 | 20 Fehler behoben. | |
7.1.14 | Alte Version, nicht unterstützt | 1 st Februar 2018 | Fehlerbehebung. | |
7.1.15 | Alte Version, nicht unterstützt | 1 st März 2018 | 12 Fehler behoben. | |
7.1.16 | Alte Version, nicht unterstützt | 29. März 2018 | 9 Fehler behoben. | |
7.1.17 | Alte Version, nicht unterstützt | 26. April 2018 | 14 Fehler behoben. | |
7.1.18 | Alte Version, nicht unterstützt | 24. Mai 2018 | 6 Fehler behoben. | |
7.1.19 | Alte Version, nicht unterstützt | 22. Juni 2018 | 6 Fehler behoben. | |
7.1.20 | Alte Version, nicht unterstützt | 19. Juli 2018 | 15 Fehler behoben. | |
7.1.21 | Alte Version, nicht unterstützt | 16. August 2018 | 16 Fehler behoben in: Kalender, Filter, PDO_Firebird, PDO_PgSQL, SQLite3, Standard & Zip | |
7.1.22 | Alte Version, nicht unterstützt | 13.09.2018 | 20 Fehler behoben auf: Core, Apache2, Bz2, gettext, iconv, intl, libxml, mbstring, Opcache, OpenSSL, phpdbg, SPL, Standard & libzip | |
7.1.23 | Alte Version, nicht unterstützt | 11. Oktober 2018 | 11 Fehler behoben auf: Core, cURL, iconv, Opcache, POSIX, Reflection, Standard, Zlib | |
7.1.24 | Alte Version, nicht unterstützt | 8. November 2018 | 11 Fehler behoben bei: Core, Datum, FCGI, FTP, intl, Standard, Tidy, XML | |
7.1.25 | Alte Version, nicht unterstützt | 06. Dezember 2018 | 13 Fehler behoben auf: Core, FTP, iconv, IMAP, OBDC, Opcache, Phar, PGSQL, SOAP, Sockets | |
7.2 | 7.2.0 | Alte Version, nur Sicherheitskorrekturen | 30. November 2017 | Schnittstelle Countable, Konstante PHP_OS_FAMILYusw. hinzugefügt . |
7.2.1 | Alte Version, nur Sicherheitskorrekturen | 4. Januar 2018 | 21 Fehler behoben. | |
7.2.2 | Alte Version, nur Sicherheitskorrekturen | 1 st Februar 2018 | 25 Fehler behoben. | |
7.2.3 | Alte Version, nur Sicherheitskorrekturen | 1 st März 2018 | Behebung von 18 Fehlern. | |
7.2.4 | Alte Version, nur Sicherheitskorrekturen | 29. März 2018 | Behebung von 16 Fehlern. | |
7.2.5 | Alte Version, nur Sicherheitskorrekturen | 26. April 2018 | Behebung von 18 Fehlern. | |
7.2.6 | Alte Version, nur Sicherheitskorrekturen | 24. Mai 2018 | 8 Fehlerbehebungen. | |
7.2.7 | Alte Version, nur Sicherheitskorrekturen | 21. Juni 2018 | Behebung von 7 Fehlern. | |
7.2.8 | Alte Version, nur Sicherheitskorrekturen | 19. Juli 2018 | Behebung von 19 Fehlern. | |
7.2.9 | Alte Version, nur Sicherheitskorrekturen | 16. August 2018 | 9 Fehlerbehebungen. | |
7.2.10 | Alte Version, nur Sicherheitskorrekturen | 13.09.2018 | Behebung von 19 Fehlern. | |
7.2.11 | Alte Version, nur Sicherheitskorrekturen | 11. Oktober 2018 | 13 Fehler behoben. | |
7.2.12 | Alte Version, nur Sicherheitskorrekturen | 8. November 2018 | 20 Fehlerbehebungen. | |
7.2.13 | Alte Version, nur Sicherheitskorrekturen | 6. Dezember 2018 | Behebung von 16 Fehlern. | |
7.2.14 | Alte Version, nur Sicherheitskorrekturen | 10. Januar 2019 | Fehlerbehebung. | |
7.2.15 | Alte Version, nur Sicherheitskorrekturen | 7. Februar 2019 | Fehlerbehebung. | |
7.2.16 | Alte Version, nur Sicherheitskorrekturen | 7. März 2019 | Fehlerbehebung. | |
7.2.31 | Alte Version, nur Sicherheitskorrekturen | 14. Mai 2020 | Fehlerbehebung. | |
7.2.32 | Alte Version, nur Sicherheitskorrekturen | 9. Juli 2020 | Fehlerbehebung. | |
7.2.33 | Alte Version, nur Sicherheitskorrekturen | 6. August 2020 | Fehlerbehebung. | |
7.2.34 | Alte Version, nur Sicherheitskorrekturen | 1 st Oktober 2020 | Fehlerbehebung. | |
7.3 | 7.3.0 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 29. November 2018 | Syntax Heredoc nowdoc und flexibler, Endpunkt im Funktionsaufruf JSON_THROW_ON_ERROR, Zuweisung durch Verweis auf die Funktion list(), is_countable(), array_key_first()und array_key_last(), Hash-Algorithmus Argon2id etc. |
7.3.1 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 10. Januar 2019 | Fehlerbehebung. | |
7.3.2 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 7. Februar 2019 | Fehlerbehebung. | |
7.3.3 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 7. März 2019 | Fehlerbehebung. | |
7.3.4 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 4. April 2019 | Fehlerbehebung. | |
7.3.5 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 2. Mai 2019 | Fehlerbehebung. | |
7.3.6 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 30. Mai 2019 | Fehlerbehebung. | |
7.3.7 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 4. Juli 2019 | Fehlerbehebung. | |
7.3.8 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 1 st August 2019 | Fehlerbehebung. | |
7.3.9 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 29. August 2019 | Fehlerbehebung. | |
7.3.10 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 26. September 2019 | Fehlerbehebung. | |
7.3.11 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 24. Oktober 2019 | Fehlerbehebung. | |
7.3.12 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 21. November 2019 | Fehlerbehebung. | |
7.3.13 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 18. Dezember 2019 | Fehlerbehebung. | |
7.3.14 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 23. Januar 2020 | Fehlerbehebung. | |
7.3.15 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 20. Februar 2020 | Fehlerbehebung. | |
7.3.16 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 19. März 2020 | Fehlerbehebung. | |
7.3.17 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 16. April 2020 | Fehlerbehebung. | |
7.3.18 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 14. Mai 2020 | Fehlerbehebung. | |
7.3.19 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 11. Juni 2020 | Fehlerbehebung. | |
7.3.20 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 9. Juli 2020 | Fehlerbehebung. | |
7.3.21 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 6. August 2020 | Fehlerbehebung. | |
7.3.22 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 3. September 2020 | Fehlerbehebung. | |
7.3.23 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 1 st Oktober 2020 | Fehlerbehebung. | |
7.3.24 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 29. Oktober 2020 | Fehlerbehebung. | |
7,4 | 7.4.0 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 28. November 2019 | 2.0 typisierte Eigenschaften, Preloading, Null-Koaleszenz-Zuweisungsoperator, openssl_random_pseudo_byteskann eine Ausnahme auslösen, Hinzufügen von schwachen Referenzen, die Hash-Erweiterung des FFI (Foreign Function Interface) ist immer obligatorisch, Registrierung von Passwort-Hashes, Split auf Multibyte-Strings, Reflexion für Referenzen, ext/wddx-Entbündelung, neuer benutzerdefinierter Objektserialisierungsmechanismus und mehrere Fehlerbehebungen. |
7.4.1 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 18. Dezember 2019 | Fehlerbehebung. | |
7.4.2 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 23. Januar 2020 | Fehlerbehebung. | |
7.4.3 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 20. Februar 2020 | Fehlerbehebung. | |
7.4.4 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 19. März 2020 | Fehlerbehebung. | |
7.4.5 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 16. April 2020 | Fehlerbehebung. | |
7.4.6 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 14. Mai 2020 | Fehlerbehebung. | |
7.4.7 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 11. Juni 2020 | Fehlerbehebung. | |
7.4.8 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 9. Juli 2020 | Fehlerbehebung. | |
7.4.9 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 6. August 2020 | Fehlerbehebung. | |
7.4.10 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 3. September 2020 | Fehlerbehebung. | |
7.4.11 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 1 st Oktober 2020 | Fehlerbehebung. | |
7.4.12 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 29. Oktober 2020 | Fehlerbehebung. | |
7.4.13 | Alte Version, Verbesserungen und Sicherheitskorrekturen | 26. November 2020 | Fehlerbehebung. | |
8.0 | 8.0.0 | Aktuelle Version, Sicherheitsverbesserungen und Fixes | 26. November 2020 | "Just-in-Time-Kompilierung", Typunionen, Typ "gemischt", Rückgabetyp "statisch", benannte Parameter, Operator "nullsicher", Schlüsselwort "match", ... |
8.1 | 8.1.0 | Zukünftige Version | 2021 |
PHP gehört zur großen Familie der C- Nachkommen , deren Syntax sehr ähnlich ist. Insbesondere ähneln Syntax und Aufbau denen der Sprachen Java und Perl , außer dass PHP-Code problemlos mit HTML- Code innerhalb einer PHP-Datei gemischt werden kann .
Bei einer für das Internet bestimmten Nutzung erfolgt die Ausführung des PHP-Codes wie folgt: Wenn ein Besucher eine Website-Seite aufrufen möchte, sendet sein Browser eine Anfrage an den entsprechenden HTTP-Server . Wenn die Seite als PHP-Skript identifiziert wird (normalerweise dank der Erweiterung .php), ruft der Server den PHP- Interpreter auf, der den endgültigen Code für die Seite verarbeitet und generiert (in der Regel bestehend aus HTML oder XHTML , aber auch oft aus Cascading Style Sheets und JS ). Dieser Inhalt wird an den HTTP-Server zurückgesendet, der ihn schließlich an den Client sendet.
Dieses Diagramm erklärt, wie es funktioniert:
Oft kommt noch ein weiterer Schritt hinzu: der Dialog zwischen PHP und der Datenbank . Normalerweise öffnet PHP eine Verbindung zum gewünschten DBMS- Server , sendet ihm Anfragen und ruft das Ergebnis ab, bevor die Verbindung geschlossen wird.
PHP wird am häufigsten als dynamischer Webseitengenerator verwendet, kann aber auch als Kommandozeilen- Programmier- oder Skriptsprache verwendet werden, ohne einen HTTP-Server oder Browser zu verwenden. Es ermöglicht dann, viele Funktionen der Sprache C und mehrere andere zu verwenden, ohne dass bei jeder Änderung des Quellcodes eine Kompilierung erforderlich ist.
Um in Linux/UNIX ausführbare PHP-Skripte von der Kommandozeile aus zu erreichen, genauso wie in Perl oder Bash , in die erste Codezeile den Shebang einzufügen : #! /usr/bin/php. Unter einem Entwicklungseditor wie SciTE reicht auch unter Windows eine erste Zeile <?php, wenn die Datei den Typ .php hat .
Es gibt auch eine Erweiterung namens PHP-GTK, die es ermöglicht, grafische Client-Anwendungen auf einem Computer mit der GTK+ -Grafikbibliothek oder der WinBinder- Alternative zu erstellen .
PHP verfügt über eine Vielzahl von Funktionen, die Operationen auf dem Dateisystem ermöglichen , Befehle im Terminal ausführen , Datenbanken verwalten , Sortier- und Hash-Funktionen , Strings verarbeiten , Daten generieren und ändern. 'Bilder, Algorithmen zur Komprimierung ...
Wikipedias Engine, MediaWiki , ist in PHP geschrieben und interagiert mit einer MySQL- oder PostgreSQL-Datenbank
Einige Beispiele für die traditionelle Hello-Welt :
<?php echo 'Hello World'; ?>echo Da es sich um eine Struktur der Sprache handelt, ist es möglich - und sogar empfohlen -, keine Klammern zu setzen.
Es ist auch möglich, die verkürzte Version zu verwenden:
<?= 'Hello World' ?>Ergebnis angezeigt:
Hello WorldDer PHP-Code muss zwischen den Tags <?phpund eingefügt werden ?>(das schließende Tag ist optional am Ende der Datei).
Es gibt andere Notationen für Tags:
Andere Notationen als die Standardnotation ( <?phpund ?>)und die Kurznotation mit Anzeige ( <?=und ?>)werden nicht empfohlen, da sie in der Serverkonfiguration (php.ini oder .htaccess) deaktiviert werden können: die Portabilität des Codes wird dadurch reduziert.
Ab PHP 7 wurden die ASP- und Skriptnotationen entfernt. Eine kurze Notation ohne Anzeige wird nicht empfohlen.
Die Anweisungen werden durch getrennt ;(es ist nicht zwingend nach der letzten Anweisung) und die Zeilenumbrüche ändern die Funktionsweise des Programms nicht. Es wäre daher möglich zu schreiben:
<?php echo 'Hello World'; echo 'Comment allez-vous ?'; echo 'Il fait beau non ?' ?>Aus Gründen der Lesbarkeit wird dennoch empfohlen, nur eine Anweisung pro Zeile zu schreiben. Es ist auch besser, den letzten zu schreiben ;.
Der PHP-Code besteht aus Aufrufen von Funktionen, um Variablen Werte zuzuweisen, alle eingerahmt in Bedingungen, Schleifen. Beispiel:
<?php // la fonction strtolower renvoie en minuscules la chaîne de caractères passée en paramètre $lang = strtolower($_POST['lang']); if ($lang === 'fr') { echo 'Vous parlez français !'; } elseif ($lang === 'en') { echo 'You speak English!'; } else { echo 'Je ne vois pas quelle est votre langue !'; }Eine Bedingung wird angewendet, wenn der Ausdruck in Klammern ausgewertet wird true, und nicht bei false. In numerischer Form steht 0für die false, und 1(und alle anderen Zahlen) für die true.
Der obige Code könnte auch so geschrieben werden:
<?php $lang = strtolower($_POST['lang']); $isLangFr = $lang === 'fr'; $isLangEn = $lang === 'en'; if ($isLangFr) { echo 'Vous parlez français !'; } elseif ($isLangEn) { echo 'You speak English!'; } else { echo 'Je ne vois pas quelle est votre langue !'; }Hier testen wir die Gleichheit zwischen $langund 'fr', aber nicht direkt im if : Der Test liefert einen booleschen Wert (also entweder trueoder false), der in der Variablen gespeichert wird $is_lang_fr. Diese Variable wird dann in die eingetragen ifund führt je nach Wert der Variablen die Verarbeitung durch oder nicht.
Die Blöcke if, elseifund elsewerden im Allgemeinen durch die Zeichen {und begrenzt }, die wie in den vorhergehenden Codes weggelassen werden können, wenn diese Blöcke nur eine Anweisung enthalten.
Es ist auch möglich, else ifin zwei Wörtern zu schreiben , wie in C/C++.
Mit dem PHP-Skript können Sie beispielsweise HTML-Code generieren:
<?php $nom = 'Albert'; echo '<div>Bonjour ' . $nom . ' !</div>';Es ist auch möglich, eine alternative Syntax für die if / else-Struktur zu verwenden:
<?php $nomsAutorises = [ 'Albert', 'Bertrand' ]; $nomEnCours = 'Eve'; ?> <?php if (in_array($nomEnCours, $nomsAutorises)): ?> <p>Bonjour <?php echo $nomEnCours; ?> !</p> <?php else: ?> <p>Vous n'êtes pas un utilisateur autorisé !</p> <?php endif; ?>Ein weiterer Ansatz ist zu verketten all HTML - Code in einer Variablen und Echo die Variable am Ende der Datei hinzu :
<?php $out = ''; // On ajoute progressivement tout le code html $out .= '<p>a' . 'b' . 'c</p>'; $out .= '<div class="bottom"><p>d' . 'e' . 'f</p></div>'; // On affiche le contenu echo $out;Für den Fall, dass der Benutzer die Verwendung des Befehls echoder Verkettung vorgezogen hat , kann er den Fluss mithilfe der Funktionen ob_start()und erfassen ob_get_clean() :
<?php // On place le flux dans un tampon ob_start(); // On fait des affichages echo 'abc' . "\n"; echo 'def' . "\n"; require_once 'fichier.php'; // De nombreux affichages (echo) // On stoppe la mise en tampon, on récupère son contenu et on met le tampon à vide (pour une éventuelle prochaine tamporisation) $out = ob_get_clean(); // On affiche le contenu du tampon echo $out;Mit PHP können Sie ebenso wie JavaScript ein Document Object Model ( DOM ) erstellen, mit dem Sie ein (X) HTML-Dokument erstellen oder ändern können, ohne HTML zu schreiben, wie das folgende Beispiel zeigt:
<?php $doctype = DOMImplementation::createDocumentType('html'); $dom = DOMImplementation::createDocument(null, 'html', $doctype); $html = $dom->documentElement; $html->head = $dom->createElement('head'); $html->appendChild($html->head); $html->head->title = $dom->createElement('title'); $html->head->title->nodeValue = 'Exemple de HTML'; $html->head->appendChild($html->head->title); $html->head->charset = $dom->createElement('meta'); $html->head->charset->setAttribute('http-equiv', 'Content-Type'); $html->head->charset->setAttribute('content', 'text/html; charset=utf-8'); $html->head->appendChild($html->head->charset); $html->body = $dom->createElement('body'); $html->appendChild($html->body); $html->body->p = $dom->createElement('p'); $html->body->p->nodeValue = 'Ceci est un paragraphe.'; $html->body->appendChild($html->body->p); $html->body->p->br = $dom->createElement('br'); $html->body->p->appendChild($html->body->p->br); $html->body->p->a = $dom->createElement('a'); $html->body->p->a->nodeValue = 'Ceci est un lien.'; $html->body->p->a->setAttribute('href', 'cible.html'); $html->body->p->appendChild($html->body->p->a); echo $dom->saveHTML();Dadurch wird der folgende HTML-Code erstellt:
<!DOCTYPE html> <html> <head> <title>Exemple de HTML</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body><p>Ceci est un paragraphe.<br /><a href="cible.html">Ceci est un lien.</a></p></body> </html>Diese Methode wird jedoch wenig verwendet, um ein vollständiges Dokument zu generieren, sie wird normalerweise verwendet, um eine XML- Datei zu generieren .
Der Befehl phpinfo()wird auch verwendet, um HTML-Code zu generieren, der Serverparameter beschreibt; Es wird auch häufig verwendet, um die ordnungsgemäße Ausführung der PHP-Laufzeit-Engine zu testen.
Wie in C++ und Java ermöglicht PHP die objektorientierte Programmierung, indem Klassen erstellt werden, die Attribute und Methoden enthalten, die instanziiert oder statisch verwendet werden können.
PHP ist jedoch eine einfache Vererbungssprache, d. h. eine Klasse kann nur von maximal einer anderen Klasse erben (ansonsten muss man ein Trait verwenden , um Mehrfachvererbung durch Komposition zu simulieren). Schnittstellen können jedoch mehrere andere erweitern.
Hier ist ein Beispiel für das Erstellen einer Klasse:
<?php interface EtreVivant { // Cette méthode devra être déclarée dans les classes implémentant cette interface. public function isDead(): bool; } class Perso implements EtreVivant { public const PV_INITIAL = 2000; private int $pv = 0; // Constructeur : celui-ci est appelé lors de l'instanciation de l'objet. // Ce constructeur possède un paramètre optionnel. public function __construct(int $pv = 0) { if ($pv < 0 || $pv > 100000000) { $this->pv = self::PV_INITIAL; } else { $this->pv = $pv; } } // Accesseurs public function getPv(): int { return $this->pv; } // Implémentation de la méthode de l'interface. public function isDead(): bool { return $this->pv === 0; } } // Création d'une classe enfant de Perso class Magicien extends Perso { private int $mana; } // Création d'une instance de classe $mage = new Magicien(1000); // Utilisation de l'objet echo 'Votre mage a ' . $mage->getPv() . ' PV.'; // Constantes de classes echo 'Le PV par défaut attribué à un nouveau personnage est de ' . Perso::PV_INITIAL . '.'; // Destruction de l'objet unset($mage);Wie viele Open-Source-Projekte hat PHP ein Maskottchen. Dies ist der éléPHPant, entworfen 1998 von El Roubio.
El Roubio wurde von der Ähnlichkeit der Buchstaben PHP mit einem Elefanten und der Tatsache inspiriert , dass in diesem Wort bereits zwei der Buchstaben der Sprache vorhanden sind, was die Entstehung des Neologismus éléPHPant ermöglichte. Alle Werke von El Roubio werden unter der GNU GPL- Lizenz vertrieben . Ein Plüsch von elePHPant blue existiert. Andere Versionen sind in den letzten Jahren entstanden (pink, gelb, rot, lila und orange) unter der Führung von Unternehmen (PHP Architect oder Zend Technologies) oder Usergroups wie PHP Women oder PHP Amsterdam.
Die Site afieldguidetoelephpant.net listet alle existierenden éléphpants auf.
Ein Webserver mit dreischichtiger Architektur besteht aus einem Betriebssystem , einem HTTP-Server , einer Serversprache und schließlich einem Datenbankmanagementsystem (DBMS), das eine Plattform darstellt.
Bei PHP als Serversprache sind die gängigsten Kombinationen die einer LAMP (für Linux Apache MySQL PHP) und WAMP (Windows Apache MySQL PHP) Plattform. Eine WAMP-Plattform wird normalerweise über ein einziges Softwarepaket installiert, das Apache, MySQL und PHP integriert, zum Beispiel EasyPHP , VertrigoServ , WampServer oder UwAmp. Es gibt dieselbe Art von Software für MAMP-Plattformen (Mac OS Apache MySQL PHP), zum Beispiel MAMP- Software .
Es gibt andere Varianten, zum Beispiel LAPP-Plattformen (das M von MySQL wird durch das P von PostgreSQL ersetzt ) oder die XAMPP- Software (Apache MySQL Perl PHP; das X zeigt an, dass die Software plattformübergreifend ist ), ein plattformübergreifendes Entwicklungskit .
Es gibt eine Vielzahl von Akronymen, die in dieser Form verwendet werden können. Manchmal kann es zu Verwechslungen zwischen der Plattform selbst und der für die Installation verwendeten Software kommen, wenn sie denselben Namen haben. Es sollte auch beachtet werden, dass die überwiegende Mehrheit der "All-in-One"-Software für die lokale Entwicklung von Webanwendungen und nicht für die Installation auf Webservern vorgesehen ist. Eine Ausnahme von dieser Regel kann Zend Server sein, der von Zend Technologies vertriebene Server, der sowohl in Entwicklungs- als auch in Produktionsumgebungen funktionieren soll.
PHP ist im Grunde eine interpretierte Sprache, was auf Kosten der Codeausführungsgeschwindigkeit geht. Seine hohe Popularität gepaart mit seiner Verwendung auf Websites mit sehr hohem Traffic ( Yahoo , Facebook ) hat eine Reihe von Leuten dazu veranlasst, seine Leistung zu verbessern, um eine größere Anzahl von Benutzern dieser Websites bedienen zu können, ohne dass neue Server gekauft werden müssen.
Die Neufassung des PHP-Kerns, die zu Zend Engine für PHP 4 und dann Zend Engine 2 für PHP 5 führte, ist eine Optimierung. Zend Engine kompiliert intern PHP-Code in Bytecode, der von einer virtuellen Maschine ausgeführt wird . Projekte Open Source APC und eAccelerator arbeiten daran, den von der Zend Engine produzierten Bytecode zu verstecken , um zu verhindern, dass PHP Skripte für jede Anfrage lädt und analysiert. Ab PHP-Version 5.5 verfügt die Sprache über einen nativen Opcode-Cache (genannt OpCache), wodurch das APC-Modul obsolet wird.
Es gibt auch Projekte zum Kompilieren von PHP-Code: