| PHP | |
|---|---|
| Basisdaten | |
| Erscheinungsjahr: | 8. Juni 1995[1][2] |
| Designer: | Rasmus Lerdorf[3] |
| Entwickler: | Rasmus Lerdorf[4], Andi Gutmans[4], PHP Group, Zend Technologies[5], Zeev Suraski |
| Aktuelle Version | 8.4.14[6] (23. Oktober 2025) |
| Wichtige Implementierungen: | Zend Engine, HHVM, Phalanger (Compiler) |
| Beeinflusst von: | C++, Perl[7], C[7], Java[7], Tcl[8], Hypertext Markup Language, JavaScript |
| Betriebssystem: | Unix-Ă€hnliches System, Microsoft Windows |
| Lizenz: | PHP-Lizenz[9] |
| www.php.net | |
PHP (rekursives Akronym und Backronym fĂŒr âPHP: Hypertext Preprocessorâ, ursprĂŒnglich âPersonal Home Page Toolsâ) ist eine Skriptsprache mit einer an C und Perl angelehnten Syntax, die hauptsĂ€chlich zur Erstellung dynamischer Webseiten oder Webanwendungen verwendet wird. PHP wird als freie Software unter der PHP-Lizenz verbreitet. PHP zeichnet sich durch breite DatenbankunterstĂŒtzung[10] und Internet-Protokolleinbindung sowie die VerfĂŒgbarkeit zahlreicher Funktionsbibliotheken[11] aus.
Hallo-Welt-Programm
[Bearbeiten | Quelltext bearbeiten]Eine von mehreren möglichen Versionen des Hallo-Welt-Programms in PHP:
<?php
echo 'Hallo Welt!';
?>
Geschichte
[Bearbeiten | Quelltext bearbeiten]Seit der Veröffentlichung im Jahr 1995 nahmen die Entwickler umfangreiche Ănderungen innerhalb der Programmiersprache vor. Der Kern der Sprache wurde mit PHP 3 komplett neu erstellt. Deutliche Anpassungen wurden mit PHP 5 bzw. PHP 5.3 vorgenommen, die den Fokus der Programmiersprache auf die objektorientierte Programmierung legt. Klassen waren jedoch bereits mit der vierten Version nutzbar.
Personal Home Page Tools (PHP 1)
[Bearbeiten | Quelltext bearbeiten]PHP wurde 1995 von Rasmus Lerdorf entwickelt. Der Begriff stand damals noch fĂŒr Personal Home Page Tools und war ursprĂŒnglich als Ersatz fĂŒr eine Sammlung von Perl-Skripten gedacht, die Lerdorf zur Protokollierung der Zugriffe auf seinen Online-Lebenslauf geschrieben hatte.[12]
PHP/FI (PHP 2)
[Bearbeiten | Quelltext bearbeiten]Bald schuf Lerdorf eine umfangreichere Version in der Programmiersprache C, in der PHP bis heute entwickelt wird. Das schlieĂlich veröffentlichte PHP/FI (FI stand fĂŒr Form Interpreter) war Perl sehr Ă€hnlich, wenn auch eingeschrĂ€nkter.
PHP 3
[Bearbeiten | Quelltext bearbeiten]PHP 3 wurde von Andi Gutmans und Zeev Suraski 1997 neu geschrieben, da das inzwischen erschienene PHP/FI 2 ihrer Meinung nach fĂŒr E-Commerce unzureichend war. Lerdorf kooperierte nun mit Gutmans und Suraski, und so wurde die Entwicklung von PHP/FI eingestellt. Die Version PHP 3 brachte die Verbreitung der Web-Skriptsprache PHP bedeutend voran. Die neue Sprache wurde einfach unter dem Namen PHP veröffentlicht, ein rekursives Akronym fĂŒr PHP: Hypertext Preprocessor, um die in den Vorversionen PHP und PHP/FI vorhandene Implizierung einer persönlichen Nutzung zu beseitigen.[13]
PHP 4
[Bearbeiten | Quelltext bearbeiten]Das von Gutmans und Suraski gegrĂŒndete Unternehmen Zend Technologies Ltd. entwickelte in der Folge die Zend Engine 1, die den Kern der PHP-4-Standardimplementierung bildet. Mit PHP 4 wurden die AusfĂŒhrungsgeschwindigkeit komplexer Applikationen und die Sicherheit bei Verwendung globaler Variablen verbessert. EingefĂŒhrt wurden die UnterstĂŒtzung fĂŒr viele weitere Webserver, das Sessionmanagement, die Ausgabepufferung sowie eine Anzahl neuer Sprachkonstrukte.
Da das World Wide Web Ende der 1990er Jahre stark wuchs, bestand groĂer Bedarf an Skriptsprachen, mit denen sich dynamische Webseiten realisieren lassen. PHP wurde mit der Zeit fĂŒr die Webentwicklung populĂ€rer als der vorherige De-facto-Standard Perl, weil es durch seine Spezialisierung als einfacher erlernbar galt.
Seit 2008 sind die Weiterentwicklung und der Support fĂŒr PHP 4 eingestellt.
PHP 5
[Bearbeiten | Quelltext bearbeiten]Im Sommer 2004 wurde mit Version 5.0 eine weitere Entwicklungsstufe veröffentlicht. Wesentlicher Unterschied zum VorgĂ€nger ist die Zend Engine II, die vor allem ein verbessertes Objektmodell nutzt, somit objektorientierte Anwendungen effizienter ausfĂŒhrt und Sprachkonstrukte wie Ăberladung ermöglicht. Dazu kommen Exceptions, Reflection, die Integration der Datenbank SQLite sowie Erweiterungen bei XML- und DOM-Handhabung.
UrsprĂŒnglich als frĂŒher Nachfolger von PHP 5 geplant, wurde die Entwicklung von PHP 6 eingestellt. Geplant war unter anderem die UnterstĂŒtzung verschiedener Unicode-Standards.[14][15] Einige Verbesserungen sind in PHP-Versionen ab 5.3 implementiert.
Weitere Möglichkeiten im Rahmen der objektorientierten Programmierung wurden mit PHP 5.3 (Namespaces, Late Static Bindings), 5.4 (Traits, Array- und Konstruktor-Dereferenzierung) und 5.5 (Generatoren) vorangetrieben.[16][17] Die Version 5.6 fĂŒhrte variadische Funktionen als natives Sprachfeature und Argument Unpacking ein, um die Verwendung einer variablen Anzahl von Parametern zu ermöglichen.[18]
Mitte 2011 entschieden die Entwickler, den laut eigenen Angaben chaotischen Release-Prozess zu vereinheitlichen. Demnach sollen regelmĂ€Ăig neue Versionen erscheinen und der Support fĂŒr Ă€ltere Versionen mit einer festen Zeitspanne garantiert werden.[19]
Die Weiterentwicklung von PHP 5.4 wurde im Herbst 2015 eingestellt. Auch Sicherheitsupdates werden seit der Veröffentlichung von PHP 5.4.45 am 3. September 2015 nicht mehr zur VerfĂŒgung gestellt.[20]
Die Weiterentwicklung von PHP 5.5 wurde am 21. Juli 2016 eingestellt.
Der aktive Support wurde fĂŒr PHP 5.6 zum 1. Januar 2017 eingestellt.[21] Auch der Security Support wurde am 31. Dezember 2018 eingestellt.[22] Sicherheitsupdates fĂŒr diese Versionen werden nur noch im Sonderfall bereitgestellt.[23][24]
PHP 7
[Bearbeiten | Quelltext bearbeiten]Nach einer Diskussion darĂŒber, ob die nĂ€chste PHP-Version den Namen des gescheiterten PHP 6 wiederaufnehmen soll oder stattdessen eine Versionsnummer ĂŒberspringen und PHP 7 heiĂen soll, wurde am 29. Juli 2014 bekanntgegeben, dass die Entwickler sich mit 58 zu 24 Stimmen fĂŒr die Hauptversionsnummer 7 entschieden haben. Der Nachfolger von PHP 5 heiĂt somit offiziell PHP 7.[25][26]
PHP 7 hat eine um bis zu 30 Prozent geringere AusfĂŒhrungszeit als PHP 5, da unter anderem Hashtabellen neu implementiert wurden.[27] Durch diverse Optimierungen am PHP-Kern beansprucht die neue Version zudem weniger Speicherplatz als der VorgĂ€nger. Auch Komponenten wie Parser, Lexer und Bytecode-Generator wurden einigen VerĂ€nderungen unterzogen.[28] Die erste Vorabversion (Alpha 1) erschien am 11. Juni 2015, die fertige Version am 3. Dezember 2015. Bei der Entwicklung von PHP 7 wurde teilweise die AbwĂ€rtskompatibilitĂ€t aufgegeben; beispielsweise die weitverbreiteten âmysqlâ Funktionen fielen dabei weg.[29] Neue Features beinhalten Engine-Exceptions, anonyme Klassen und CSPRNG-Funktionen. Der aktive Support fĂŒr PHP 7.0 wurde am 3. Dezember 2017 eingestellt. Genau ein Jahr spĂ€ter, am 3. Dezember 2018, wurde auch der Security Support fĂŒr diese Version eingestellt.[30]
Anfang Dezember 2016 wurde PHP 7.1 veröffentlicht.
Am 30. November 2017 folgte schlieĂlich nach einer ca. viermonatigen Betaphase PHP 7.2.
Die Neuerungen der aktuellen Version sollen in erster Linie fĂŒr mehr Klarheit sorgen.[31]
PHP 7.3 erschien am 6. Dezember 2018.[32] Es soll eine deutlich verbesserte Performance zeigen.[33]
Seit dem 24. Oktober 2019 gibt es die Version 7.3.11, nachdem aufgedeckt wurde, dass Nginx-Server mit PHP-FPM aus der Ferne angreifbar waren.[34][35]
PHP 7.4 erschien am 28. November 2019.[36]
Ab 2006 hat Microsoft unter anderem durch die Bereitstellung von BinĂ€rdateien, Bibliotheken und einem Modul fĂŒr den IIS PHP bis Version 7.4 offiziell unterstĂŒtzt. 2020 hat das Unternehmen angekĂŒndigt, den Support fĂŒr PHP ab Version 8.0 auslaufen zu lassen.[37]
PHP 8
[Bearbeiten | Quelltext bearbeiten]PHP 8 wurde am 26. November 2020 veröffentlicht.[38] Die Version unterstĂŒtzt unter anderem Just-in-time-Kompilierung, was in Micro-Benchmarks fĂŒr eine Steigerung der Performance um mehr als 45 Prozent sorgt[39], und bringt einige neue Befehle mit. So liefert PHP 8 beispielsweise mit der Funktion WeakMaps eine Erweiterung von WeakRefs, die Nutzern bereits in PHP 7.4 zur VerfĂŒgung stand. Diese Funktion ermöglicht einen ressourcenschonenden Umgang mit Objekten. AuĂerdem unterstĂŒtzt PHP 8 beliebige Union Types. Damit können bis auf einige wenige Ausnahmen zwei oder mehrere Typen eine Union eingehen.[39]
Verbreitung
[Bearbeiten | Quelltext bearbeiten]
PHP wurde Anfang 2013 auf etwa 244 Millionen Websites eingesetzt[40] und Anfang 2019 von 79 % aller serverseitig erstellen Webseiten als Programmiersprache verwendet.[41] PHP ist die am hÀufigsten verwendete Programmiersprache zum serverseitigen Erstellen von Websites.[42] Zudem ist sie bei den meisten Webhostern vorinstalliert.
PopularitÀt
[Bearbeiten | Quelltext bearbeiten]PHP ist in seiner ursprĂŒnglichen Form als web-zentrische Skriptsprache fĂŒr Webdokumentvorlagen (Templates) konzipiert. Die weite Verbreitung des Apache Webservers und des passenden PHP-Erweiterungsmoduls ermöglicht eine preiswerte und niederschwellige Bereitstellung von Webapplikationsumgebungen, auf denen Software als einfache Quelltextdateien schnell und unkompliziert ĂŒber Standardprotokolle wie SFTP lauffertig ausgeliefert werden kann. Zudem ermöglicht die schrittweise Erweiterung von statischen Webdokumenten (HTML) mit kleinen Hilfsfunktionen und ĂŒberschaubaren Logik-Blöcken einen leichten Einstieg in die serverseitige Webprogrammierung. Da der Einsatz von PHP als Template-Engine in dieser Form zustandsfrei ist und sich oft auf ĂŒberschaubare Prozeduren beschrĂ€nkt, entfallen bei der Programmierung in PHP in vielen Situationen auch schwierigere, tiefer gehende Problemstellungen der Informatik, wie zum Beispiel Speicher- und Prozessverwaltung oder die Notwendigkeit von RĂŒckruffunktionen. Diese Eigenschaften sind auch mit Ursache fĂŒr die weite Verbreitung und PopularitĂ€t von PHP.
Funktionsweise
[Bearbeiten | Quelltext bearbeiten]
PHP ist ein System, das PHP-Code serverseitig verarbeitet. Das bedeutet, dass der Quelltext nicht an den Webbrowser ĂŒbermittelt wird, sondern an einen Interpreter auf dem Webserver. Erst die Ausgabe des PHP-Interpreters wird an den Browser geschickt. In den meisten FĂ€llen ist das ein HTML-Dokument, wobei es mit PHP aber auch möglich ist, andere Dateitypen, wie Bilder oder PDF-Dateien, zu generieren.
Um eine PHP-Datei im Rahmen einer Webanwendung ausfĂŒhren zu können, benötigt man ein System, das mit den in der Datei enthaltenen Anweisungen umgehen kann. Aus diesem Grund wird durch eine Schnittstelle, wie ISAPI oder CGI, der Interpreter von einem Server-Daemon oder Server-Dienst, wie Apache oder IIS, ausgefĂŒhrt. Die Kombination von Linux/Windows/macOS als Betriebssystem, Apache als Webserver, MySQL als Datenbanksystem und PHP wird LAMP (fĂŒr Linux), WAMP (fĂŒr Windows) oder MAMP (fĂŒr Mac OS X) genannt. Fertige LAMP-, MAMP- und WAMP-Pakete, die das einzelne Laden und Konfigurieren von Paketen aus dem Internet unnötig machen, werden etwa im Projekt XAMPP entwickelt. Hier gibt es Versionen fĂŒr Linux, Solaris, Windows und Mac OS X, die jedoch nur fĂŒr Test- und Entwicklungsumgebungen genutzt werden sollen.[43]
Da PHP normalerweise in einer Webserver-Umgebung lĂ€uft, unterliegt es auch dem zustandslosen HTTP. Jede PHP-Seite belastet den Webserver durch den Interpreter, zudem arbeitet der Interpreter den Quelltext bei jedem Aufruf erneut ab. Das mindert die Reaktionsgeschwindigkeit des Servers und erhöht die Last. Um dem entgegenzuwirken, stehen verschiedene Bytecode-Caches zur VerfĂŒgung, die eine zur AusfĂŒhrung vorbereitete Version des Programmes zwischenspeichern und somit den Zugriff auf diese Datei beim nĂ€chsten Aufruf beschleunigen (siehe auch Abschnitt Bytecode-Caching und Artikel PHP-Beschleuniger).
Mit PHP lassen sich auch kommandozeilenorientierte Skripte schreiben, die vom Internet unabhĂ€ngig sind. Die Qt-Erweiterung und die GTK-Erweiterung stellen sogar eine Programmierschnittstelle fĂŒr eine grafische OberflĂ€che zur VerfĂŒgung, fĂŒr die weder ein Webserver noch ein Browser benötigt werden. Die ersten Versionen der Schnittstellen zur grafischen OberflĂ€che und zu anderen Betriebssystemfunktionen waren spĂ€rlich und wurden kaum verwendet. Die aktuell entwickelte PHP-GTK-Version 2 strebt hingegen eine Abdeckung der GTK-API von 95 % an.[44] GegenwĂ€rtig wird PHP jedoch vor allem auf Webservern genutzt.
Syntax
[Bearbeiten | Quelltext bearbeiten]Kommentare
[Bearbeiten | Quelltext bearbeiten]In PHP sind drei verschiedene Kommentararten möglich.
// einzeiliger Kommentar
# einzeiliger Kommentar
/* mehrzeiliger
Kommentar */
PHP und HTML
[Bearbeiten | Quelltext bearbeiten]Ein PHP-Skript lÀsst sich in HTML integrieren.
<!DOCTYPE HTML>
<html>
<head>
<title>Hallo-Welt-Beispiel</title>
</head>
<body>
<?php echo 'Hallo Welt!'; ?>
</body>
</html>
Die alternative Syntax fĂŒr Kontrollstrukturen ermöglicht es, Kontrollstrukturen wie bedingte Anweisungen oder Schleifen zu vereinfachen. Statt der öffnenden geschweiften Klammer { wird ein Doppelpunkt : verwendet. Die schlieĂende Klammer } ersetzt ein end gefolgt vom Namen der Struktur, z. B. endif. Dies ist fĂŒr eine Einbettung in HTML hilfreich und verbessert die Ăbersichtlichkeit. Bei einer schlieĂenden geschweiften Klammer ist dagegen beispielsweise nicht klar, ob diese von einer bedingten Anweisung oder einer Schleife stammt â insbesondere, wenn mehrere Kontrollstrukturen verschachtelt wurden. Folgendes Beispiel zeigt die alternative Syntax und darunter die regulĂ€re Schreibweise mit geschweiften Klammern:
<?php if ($a == 5): ?>
A entspricht 5.
<?php endif; ?>
// Zum Vergleich: Die regulÀre Schreibweise
<?php if ($a == 5) { ?>
A entspricht 5.
<?php } ?>
In beiden FĂ€llen wird der Text A entspricht 5 nur ausgegeben, wenn die Variable $a auf den entsprechenden Wert gesetzt wurde. Die alternative Syntax ist standardmĂ€Ăig aktiv, es sind keine Ănderungen an der PHP-Konfiguration notwendig.[45]
Einbindung von Dateien
[Bearbeiten | Quelltext bearbeiten]In ein PHP-Skript können externe Dateien eingebunden werden. Dazu gibt es vier verschiedene Anweisungen.
require 'pfad/datei.php'; // wenn die Datei nicht eingebunden werden kann, folgt ein Fehler
include 'pfad/datei.php'; // wenn die Datei nicht eingebunden werden kann, folgt eine Warnung
require_once 'pfad/datei.php'; // bindet die Datei nur ein, wenn sie zuvor noch nicht eingebunden wurde
include_once 'pfad/datei.php'; // bindet die Datei nur ein, wenn sie zuvor noch nicht eingebunden wurde
Variablen
[Bearbeiten | Quelltext bearbeiten]Variablennamen mĂŒssen mit dem Dollarzeichen beginnen. Variablen können in PHP nicht deklariert werden. Die Auswertung einer Variablen der noch kein Wert zugewiesen wurde ergibt einen SĂ€umniswert; ein Tippfehler im Variablennamen ist in PHP kein Fehler.
$variable = 'wert';
Konstanten
[Bearbeiten | Quelltext bearbeiten]Konstanten mĂŒssen in PHP deklariert werden. Sie werden mittels define('name', wert); global oder in Klassen mittels const name = wert; lokal erzeugt. Seit PHP 7.1 können Klassenkonstanten auch eine Sichtbarkeit besitzen (ohne explizite Angabe sind sie wie in frĂŒheren PHP-Versionen automatisch public). GĂ€ngige Praxis ist es, Konstantennamen in GroĂbuchstaben zu schreiben, dies ist jedoch nicht von der Sprache vorgeschrieben.
define('MEINE_KONSTANTE', 'wert');
class MyClass
{
protected const KLASSEN_KONSTANTE = 420;
}
Eine Konstante kann nachtrÀglich nicht editiert werden. Klassenkonstanten existieren einmalig pro Klasse, nicht pro Instanz der Klasse und verhalten sich somit wie statische Eigenschaften der Klasse.
Datentypen
[Bearbeiten | Quelltext bearbeiten]Der Datentyp einer Variablen wird ĂŒblicherweise nicht vom Programmierer im Quellcode bestimmt, sondern automatisch wĂ€hrend der Laufzeit. Er ergibt sich aus dem Kontext, in dem eine Variable benutzt wird. Explizite Typumwandlungen sind möglich. Ab Version 7 können Funktionen auch einfache Typen fĂŒr ihre Parameter und ihren RĂŒckgabewert vorschreiben â fĂŒr Argumente, die Arrays oder Klassen beinhalten, war dies bereits vorher möglich.
// Skalare Datentypen
$wahrheitswert = true; // boolean
$ganzzahl = 5; // integer
$kommazahl = 4.71; // float (oder double)
$zeichenkette = 'foo'; // string
// Zusammengesetzte Datentypen
$feld = array('foo', 'bar'); // array
$objekt = new stdClass(); // object
$funktion = function () { // callable
echo 'hello world!';
};
// Spezielle Datentypen
$resource = fopen("foo", "w"); // resource
$variable = NULL; // NULL
AusfĂŒhrung
[Bearbeiten | Quelltext bearbeiten]Allgemein
[Bearbeiten | Quelltext bearbeiten]PHP setzt man ĂŒblicherweise als Servermodul, also als Teil der Webserver-Prozesse oder ĂŒber FastCGI ein. Setzt man PHP als CGI-Programm ein, so kann sich das negativ auf die AusfĂŒhrungsgeschwindigkeit auswirken, da fĂŒr jede HTTP-Anfrage eine neue PHP-Interpreter-Instanz gestartet wird.
Bytecode-Caching
[Bearbeiten | Quelltext bearbeiten]Mit der Zend-Engine wird ein PHP-Skript zunĂ€chst zu einem (plattformunabhĂ€ngigen) Bytecode (Zend-Opcode) ĂŒbersetzt, aus dem zur AusfĂŒhrung noch Maschinencode erzeugt werden muss. Durch Verwendung eines Bytecode-Cache kann die redundante Generierung von Opcode vermieden werden. Bis zur Version 5.4 besaĂ PHP keinen integrierten Bytecode-Cache, was dazu fĂŒhrte, dass ein Skript bei jedem Aufruf neu ĂŒbersetzt werden musste. Um dem entgegenzuwirken, wurden einige Erweiterungen entwickelt, die diese FunktionalitĂ€t nachrĂŒsten, wie beispielsweise den eAccelerator, den Alternative PHP Cache, XCache sowie den kommerziellen Zend Optimizer. Ab der PHP-Version 5.5 wurde der Zend Optimizer+ nun in die Skriptsprache integriert.[46]
Besonders bei umfangreichen Skripten kann durch einen Bytecode-Cache eine deutliche Steigerung der AusfĂŒhrungsgeschwindigkeit erreicht werden.[47]
Kompilierung
[Bearbeiten | Quelltext bearbeiten]Der PHP-Compiler (PHC)[48] ist ein OpenSource-Compiler von Paul Biggar, der PHP-Skripte in optimierten C-Code ĂŒbersetzt und dann als eigenen Webserver ausfĂŒhrt. Die Grundlage fĂŒr PHC ist Biggars Doktorarbeit[49] aus dem Jahr 2009 und dessen mehrjĂ€hrige Forschung an Konzepten zur Konvertierung von Scriptsprachen in kompilierte Sprachen. Mit HipHop existiert seit 2010 eine weitere freie Software zum Ăbersetzen von PHP-Code in C++-Code, der kompiliert werden kann, was nach Herstellerangaben dort die Leistung im Schnitt auf etwa das Doppelte steigert. HipHop wurde von Facebook entwickelt, um die Serverlast zu senken (laut Facebook um etwa 40 %). Es ist als Open-Source-Software auf GitHub zu finden.[50] Mit Quercus existiert die Möglichkeit PHP in Java zu ĂŒbersetzen.
Verbreitete PHP-Applikationen
[Bearbeiten | Quelltext bearbeiten]Eine Auswahl einiger weit verbreiteter Applikationen, die in PHP entwickelt wurden:
- Foren-Software
- Invision Power Board, XenForo, MyBB, phpBB, Simple Machines Forum, vBulletin und WoltLab Burning Board (in der aktuellsten Version Woltlab Suite Forum genannt)
- Webframeworks
- Laravel, Zend Framework, Symfony, CakePHP, CodeIgniter, Neos Flow, Horde, WoltLab Community Framework (mittlerweile Woltlab Suite Core), Yii
- Grafische BenutzeroberflÀchen zur Verwaltung von Datenbanken (zum Beispiel MySQL)
- phpMyAdmin, phpPgAdmin, Adminer
- Content-Management- (CMS) und Blog-Systeme
- WordPress, TYPO3, Joomla, Xoops, Drupal, Contao, WebEdition, Serendipity
- Customer-Relationship-Management-Systeme (CRM)
- SugarCRM und Vtiger
- E-Commerce-Applikationen
- osCommerce, Magento, PrestaShop, Pimcore, Shopware, OXID eShop
- Projektmanagement
- EGroupware
- Bildergalerien
- Coppermine, 4images, easyImage
- Datenspeicherung
- Nextcloud, Owncloud
- Sonstige
- MediaWiki, DokuWiki, Roundcube
Lizenz und Bezug
[Bearbeiten | Quelltext bearbeiten]PHP 3 wurde unter der GNU General Public License (GPL) vertrieben. Ab Version 4 wird PHP unter der PHP License vertrieben, da der neue Parser, die Zend Engine, vom Hersteller Zend unter einer nicht GPL-kompatiblen Lizenz veröffentlicht wird. Die PHP-Lizenz ist eine Softwarelizenz, die die freie Verwendung und VerÀnderung der Quelltexte erlaubt. Die Software kann kostenlos aus dem Internet geladen werden; daneben ist PHP auch im Lieferumfang einiger Betriebssysteme (so bei einigen Linux-Distributionen oder macOS) enthalten.
Weiterentwicklungen
[Bearbeiten | Quelltext bearbeiten]Objektorientierung
[Bearbeiten | Quelltext bearbeiten]Ab Version 5 unterstĂŒtzt PHP durch Kapselung der Daten, Destruktoren und Ausnahmebehandlung per Exceptions verbesserte und erweiterte Möglichkeiten der objektorientierten Programmierung. Objekt-Variablen sind in PHP 5 nur noch Referenzen auf Objekte und nicht wie in PHP 4 die Objekte selbst. Aktuelle Versionen setzen weitere Konzepte objektorientierter Programmierung ein, so werden ab Version 5.3 NamensrĂ€ume[51] und ab Version 5.4 Traits unterstĂŒtzt.
Datenbankanbindung
[Bearbeiten | Quelltext bearbeiten]Mit der objektorientierten Datenbankabstraktionsebene PDO wurde dem oft bemÀngelten uneinheitlichen Zugriff auf verschiedene Datenbanken in der Version 5.1 entgegengewirkt.
Speicheroptimierung
[Bearbeiten | Quelltext bearbeiten]In PHP 5.3 wurde eine deutliche Verbesserung der Speicheranforderung eines PHP-Skripts zur Laufzeit durch einen internen Garbage Collector erreicht. Seitdem ist eine Zusatzinstallation von Zend Optimizer nicht mehr notwendig.
Webserver
[Bearbeiten | Quelltext bearbeiten]Ab Version 5.4 ist ein einfacher Webserver integriert, der ĂŒber die Kommandozeile konfigurierbar ist. Er wird nicht fĂŒr den Produktiveinsatz empfohlen.
Unicode
[Bearbeiten | Quelltext bearbeiten]In der Version 5.6 wurde der Standard-Zeichensatz von ISO-8859-1 auf UTF-8 geĂ€ndert.[52] Um eine sichere Verarbeitung von Unicode zu gewĂ€hrleisten, mĂŒssen die Multi-Byte-Varianten von stringverarbeitenden Funktionen verwendet werden.[53] Also âmb_substrâ anstelle âsubstrâ[54] oder âmb_strposâ statt âstrposâ.[55] âmbâ steht fĂŒr âmulti byteâ.
Sessions
[Bearbeiten | Quelltext bearbeiten]In gewöhnlichen Variablen gespeicherte Daten sind nur innerhalb eines HTTP-Requests verfĂŒgbar (im sogenannten request scope) und werden am Ende des Seitenaufrufs aus dem Speicher gelöscht. Ein Besuch eines Nutzers besteht allerdings meist aus mehreren Seitenaufrufen. Um Daten wie etwa die Produkte in einem Einkaufswagen fĂŒr eine ganze Sitzung verfĂŒgbar zu machen (im session scope), verwendet man Sessionvariablen. In der Standardkonfiguration speichert PHP die Sessiondaten im Dateisystem des Webservers. Daten, die sessionĂŒbergreifend verfĂŒgbar sein sollen (im application scope), mĂŒssen auf anderen Wegen auf dem Webserver abgespeichert werden.[56]
Bewertung
[Bearbeiten | Quelltext bearbeiten]Einige PHP-Module sind nicht threadsicher.
Die schwache Typisierung von PHP ist Teil des Konzepts, aber auch eine mögliche Fehlerquelle. Ein Fehler tritt etwa auf, wenn numerische AusdrĂŒcke mit ZeichenkettenausdrĂŒcken verglichen werden sollen (Operator: ==), wobei es durch die implizite Typumwandlung zu unerwarteten Ergebnissen kommen kann, sofern kein Operator fĂŒr typsichere Vergleiche (Operator: ===) verwendet wurde. Zudem ist es in PHP nicht möglich, eine Variablendeklaration zu erzwingen. Variablen werden vielmehr durch erstmalige Verwendung implizit deklariert. Dieser Komfort hat zur Folge, dass etwa Tippfehler im Variablennamen zu schwer auffindbaren Programmfehlern fĂŒhren können. Um solche Probleme zu finden, kann das LogLevel E_NOTICE aktiviert werden. Dadurch wird beim Verwenden einer nicht initialisierten Variable eine Fehlermeldung ausgegeben.[57]
Es kann vorkommen, dass Funktionen im Falle eines Fehlers keine Ausnahme auslösen. Dadurch ist keine standardisierte Fehlerbehandlung möglich. Mit Hilfe von âset_error_handlerâ kann fĂŒr diese FĂ€lle eine individuelle Fehlerbehandlung definiert werden.[58] Seit PHP 7 können viele fatale Fehler mittels Ausnahmebehandlung Ă€hnlich wie Exceptions abgefangen werden.
Literatur
[Bearbeiten | Quelltext bearbeiten]- Thomas Theis: Einstieg in PHP 8 und MySQL. 15. Edition. Rheinwerk, Bonn 2023, ISBN 978-3836292740.
- Christian Wenz, Tobias Hauser: PHP 8 und MySQL. Das umfassende Handbuch zu PHP 8. Dynamische Webseiten, von den Grundlagen bis zur fortgeschrittenen PHP-Programmierung. 2024, ISBN 978-3367100002.
- Frank Dopatka: PHP. Endlich objektorientiert. Entwickler Press, Frankfurt am Main 2010, ISBN 978-3-86802-039-7.
- Matt Zandstra: PHP 8 Objects, Patterns, and Practice. 7. Auflage. Apress, 2024, ISBN 979-8868804816.
- Florence Maurice: PHP 7 und MySQL. dpunkt, Heidelberg 2018, ISBN 978-3864906015.
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- â Google Groups. (abgerufen am 11. Dezember 2018).
- â PHP: History of PHP - Manual. (abgerufen am 25. August 2016).
- â lerdorf.com. (englisch, abgerufen am 31. Mai 2021).
- â a b php.net.
- â www.technotification.com. (abgerufen am 14. August 2018).
- â Version 8.4.14. 23. Oktober 2025 (abgerufen am 24. Oktober 2025).
- â a b c PHP: Preface - Manual. (abgerufen am 25. August 2016).
- â Rasmus Lerdorf | PHP on Hormones. 29. Juli 2013 (abgerufen am 19. MĂ€rz 2016).
- â php.net. (abgerufen am 25. August 2016).
- â PHP-Handbuch: Datenbankerweiterungen
- â PHP-Handbuch: Erweiterungen
- â AnkĂŒndigung von Rasmus Lerdorf zu PHP 1.0 in der Newsgroup comp.infosystems.www.authoring.cgi
- â Die Geschichte von PHP auf php.net, abgerufen am 4. September 2013.
- â Resetting PHP6
- â The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6
- â Die Entwicklung von PHP 5.4 im Ăberblick, heise.de, abgerufen am 21. MĂ€rz 2013.
- â New features Neue Funktionen fĂŒr PHP 5.4 im Ăberblick (englisch, abgerufen am 21. MĂ€rz 2013)
- â Was bringt PHP 5.6 Neues? In: cyon.ch. Archiviert vom (nicht mehr online verfĂŒgbar) am 24. MĂ€rz 2016; abgerufen am 16. MĂ€rz 2016.
- â RFC: releaseprocess, Entwurf und Abstimmung ĂŒber einen vereinheitlichten Release-Prozess, wiki.php.net (englisch), abgerufen am 21. MĂ€rz 2013.
- â PHP: Unsupported Branches. In: secure.php.net. Abgerufen am 16. MĂ€rz 2016.
- â heise.de
- â Supported Versions, php.net, Englisch
- â PHP: News Archive â 2016. In: php.net. Abgerufen am 26. Juli 2016.
- â PHP: Supported Versions. In: secure.php.net. Abgerufen am 16. MĂ€rz 2016.
- â php.internals: Re: Name of Next Release of PHP (again)
- â PHP RFC: Name of Next Release of PHP
- â PHP7: PHP reduziert Array-Speicherbedarf deutlich, Golem.de
- â PHP7: kĂŒrzere Lade- und Zugriffzeiten im Web. In: 1&1 Digital Guide. 11. Januar 2018, abgerufen am 15. September 2018.
- â PHP bricht AbwĂ€rtskompatibilitĂ€t
- â Currently Supported Versions. php.net, abgerufen am 22. November 2018.
- â Programmiersprachen: PHP 7.2 erscheint pĂŒnktlich. In: heise.de. Abgerufen am 4. Dezember 2017.
- â PHP 7 ChangeLog. In: php.net. Abgerufen am 21. November 2019 (englisch).
- â Alexander Neumann: Update freigegeben: Was neu ist in PHP 7.3. In: heise.de. 6. Dezember 2018, abgerufen am 16. Dezember 2018.
- â heise online: Updates fĂŒr PHP7: NGINX-Server mit PHP-FPM waren aus der Ferne angreifbar. Abgerufen am 29. Oktober 2019.
- â CVE-2019-11043: Vulnerability in PHP-FPM Could Lead to Remote Code Execution on nginx. 24. Oktober 2019, abgerufen am 29. Oktober 2019 (deutsch).
- â PHP 7.4.0 Released! In: php.net. Abgerufen am 1. Dezember 2019 (englisch).
- â heise online: Microsoft stellt offiziellen Windows-Support fĂŒr PHP ab Version 8.0 ein. Abgerufen am 29. November 2021.
- â PHP 8.0.0 Released! In: php.net. 26. November 2020, abgerufen am 26. November 2020.
- â a b PHP 8: Alle Informationen zur neuen Version. In: Digital Guide IONOS. 21. November 2021, abgerufen am 29. November 2021.
- â PHP just grows & grows, Ergebnisse einer Netcraft-Studie, Januar 2013 (englisch), abgerufen am 1. Februar 2013.
- â Usage of server-side programming languages for websites. Abgerufen am 16. April 2019.
- â Historical yearly trends in the usage of server-side programming languages for websites. Abgerufen am 20. Januar 2015.
- â Sicherheitswarnung der XAMPP-Entwickler, apachefriends.org, abgerufen am 4. September 2013.
- â php.net (englisch), abgerufen am 17. Juni 2007.
- â Alternative syntax for control structures. In: php.net. Abgerufen am 8. Oktober 2022.
- â Opcode-Cache: Zend Optimizer+ wird in PHP 5.5 integriert, golem.de
- â Sascha A. Carlin: PHP on Fire: Five Opcode Caches compared. In: itst.net. 15. Oktober 2006, abgerufen am 29. Juni 2010 (englisch).
- â Paul Biggar: PHP Compiler (PHC) auf Basis einer mehrjĂ€hrigen Doktorarbeit. 1. Oktober 2009, abgerufen am 29. Juli 2011.
- â Paul Biggar: Design and Implementation of an Ahead-of-Time Compiler for PHP. Trinity College Dublin, 1. Oktober 2009, abgerufen am 29. Juli 2011 (englisch).
- â Alexander Neumann: Facebook will PHP beschleunigen. In: heise Developer. heise Zeitschriften Verlag, 3. Februar 2010, abgerufen am 23. Februar 2010.
- â PHP-Handbuch: Namespaces
- â PHP: Beschreibung der php.ini-Direktiven des Sprachkerns â Manual. Abgerufen am 27. Dezember 2019.
- â PHP: Multibyte String Funktionen â Manual. Abgerufen am 27. Dezember 2019.
- â php manual mb_substr
- â php manual mb_strpos
- â Stephan Schmidt: PHP Design Patterns,. 2. Auflage. OâReilly, Köln 2009, S. 403f.
- â PHP-Handbuch: Option error_reporting
- â set_error_handler â Bestimmt eine benutzerdefinierte Funktion zur Fehlerbehandlung, PHP-Dokumentation
