PHP
PHP
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | The PHP Group |
Erscheinungsjahr | 8. Juni 1995[1][2] |
Aktuelle Version | 5.1.4 (4. Mai 2006) 4.4.2 (13. Januar 2006) |
Aktuelle Vorabversion | 7.4.0 alpha 1[3] (13. Juni 2019) |
Betriebssystem | Linux, Mac OS X, Windows uvm. |
Programmiersprache | C[4] |
Kategorie | Skriptsprache |
Lizenz | PHP-Lizenz |
deutschsprachig | nein |
www.php.net |
PHP (rekursives Akronym für „PHP: Hypertext Preprocessor“, ursprünglich „Personal Home Page Tools“) ist eine Skriptsprache mit einer an Java bzw. Perl angelehnten Syntax, die hauptsächlich zur Erstellung dynamischer Webseiten oder ganzer Webanwendungen verwendet wird. PHP ist Open-Source-Software.
PHP zeichnet sich besonders durch die leichte Erlernbarkeit, die breite Datenbankunterstützung und Internet-Protokolleinbindung sowie die Verfügbarkeit zahlreicher zusätzlicher Funktionsbibliotheken aus. Es existieren zum Beispiel Bibliotheken, um Bilder und Grafiken zur Einbindung in Webseiten dynamisch zu generieren.
Allgemein

PHP ist eine serverseitig interpretierte Sprache. Das bedeutet, dass der Quelltext – im Gegensatz zu JavaScript, das in der Regel clientseitig ausgeführt wird – nicht an den Browser übermittelt wird, sondern an einen Interpreter auf dem Webserver. Erst dessen Ausgabe wird an den Browser geschickt. In den meisten Fällen ist dies ein HTML-Dokument, wobei es mit PHP aber auch möglich ist, andere Datentypen, wie z. B. Bilder oder PDF-Dateien, zu generieren.
Mit PHP lassen sich wie mit Perl auch Skripte schreiben, die nichts mit dem WWW zu tun haben. Die GTK-Erweiterung stellt sogar eine Programmierschnittstelle für eine grafische Oberfläche zur Verfügung, für die weder ein Webserver noch ein Browser benötigt werden. Verglichen mit "Allzweck"-Skriptsprachen wie Python und Perl sind die Schnittstellen für die grafische Oberfläche und zu anderen Betriebssystemfunktionen aber spärlich und werden kaum verwendet. PHP spielt seine Stärken vor allem beim Einsatz auf Webservern aus.
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 (beispielsweise ISAPI oder CGI) der Interpreter von einem Serverdaemon bzw. Serverdienst (in der Regel Apache oder IIS) ausgeführt. Die auf WWW-Servern übliche Kombination von Linux/Windows als Betriebssystem, Apache als Webserver, MySQL-Server als Datenbank und PHP wird LAMP bzw. WAMP genannt. Fertige LAMP- und WAMP-Pakete, die das einzelne Laden und Konfigurieren von Paketen aus dem WWW unnötig machen, werden im Projekt XAMPP entwickelt, wobei es inzwischen Versionen für Linux, Solaris, Windows und Mac OS X gibt.
Die Vorteile der serverseitigen Ausführung sind, dass beim Client (Browser) keine speziellen Fähigkeiten erforderlich sind oder Inkompatibilitäten auftreten können, wie es beispielsweise bei JavaScript und den verschiedenen Browsern der Fall ist. Außerdem bleibt der PHP-Quelltext der Seite auf dem Server, und nur die generierten Daten sind für den Besucher einsehbar. Gleiches gilt für andere Ressourcen wie z. B. Datenbanken, die daher auch keine direkte Verbindung zum Client benötigen.
Nachteilig ist, dass jede Aktion des Benutzers erst bei einem erneuten Aufruf der Seite erfasst werden kann. Da PHP normalerweise in einer Webserverumgebung läuft, unterliegt es auch dem zustandslosen HTTP (allerdings wirkt PHP mit seinem Sessionmechanismus dagegen an). Außerdem wird jede PHP-Seite vom Server interpretiert, wodurch dessen Belastung steigt. Diese Vor- und Nachteile sind nicht PHP-spezifisch, sondern treten bei grundsätzlich jeder Webanwendung auf. Zusätzlich liest, prüft und übersetzt der Interpreter den Quelltext bei jedem Aufruf erneut. Dies mindert die Reaktionsgeschwindigkeit des Servers und erhöht nochmals die Last. Um dem entgegenzuwirken, wurde eine Erweiterung namens MMCache entwickelt. Diese speichert eine zur Ausführung vorbereitete Version des Programms zwischen und beschleunigt somit den Zugriff auf diese Datei beim nächsten Aufruf. Der MMCache wird inzwischen nicht mehr weiterentwickelt, seine Stelle nimmt der Nachfolger eAccelerator ein.
Mängel
PHP ist zeitweise etwas ungesteuert gewachsen. So funktioniert der Zugriff auf eine Datenbank mittels der MySQL-Funktionen anders als über ODBC; noch deutlicher wird dies beispielsweise bei Inkonsistenzen der Funktionen zur String-Verarbeitung. Zwar unterstützt PHP bereits seit Version 3 grundlegend objektorientiertes Programmieren (in den Versionen 4 und 5 verbessert und erweitert), aber die gesamte Standardbibliothek von PHP 4 und der Großteil derer von PHP 5 sind noch prozedural angelegt. Auch bei objektorientierten Sprachen übliche Features wie Kapselung der Daten (z. B. private Variablen), Destruktoren oder Fehlerbehandlung per Exceptions sind erst in PHP 5 hinzugekommen.
Die Funktionen register_shutdown_function()
, set_error_handler()
und error_reporting()
in PHP 4 können diese wichtigen Sprachkonstrukte nicht ersetzen.
Die aktuelle Version PHP 5 mit der neuen Zend Engine 2 ist seit dem 13. Juli 2004 verfügbar. Um die Missstände aus der vorherigen Version zu beheben, wurden Änderungen am Verhalten von PHP selbst nötig. So sind Objekt-Variablen in PHP 5 wie bei den meisten Sprachen nur noch eine Referenz auf das Objekt und nicht wie in PHP 3 und 4 das Objekt selbst. In PHP 5 wurden außerdem wichtige OOP-Features wie z. B. Destruktoren und die Festlegung der Sichtbarkeit einer (Klassen-)Eigenschaft (public, private oder protected) ergänzt. Einige wichtige Teile der Standardbibliothek wie etwa die DOM-API sind seit PHP 5 objektorientiert. In PHP 5.1 wurde mit PHP Data Objects (PDO) eine neue objektorientierte Erweiterung aufgenommen, die einen einheitlichen Zugriff auf die verschiedenen SQL-Datenbanken ermöglicht.
Bemängelt wird aber noch immer der auch in der Version 5 unzureichende Support von Unicode. Bisher bietet PHP nur einige Funktionen, bei denen ein Zeichensatz (darunter auch UTF-8) angegeben werden kann, sowie Funktionen zur Konvertierung von und nach UTF-8, aber noch keine durchgehende Unterstützung. Für viele Probleme sorgen auch die "magic quotes"- und "autoglobals"-Mechanismen, die je nach Serverkonfiguration aktiviert oder deaktiviert sind. Ursprünglich waren sie als Bequemlichkeits-Feature und zusätzliches "Sicherheitsnetz" für Anfänger gedacht, aber ein portables Skript muss mit allen möglichen Konfigurationen umgehen können, wodurch sich der Effekt ins Gegenteil verkehrt. Siehe dazu auch die englischsprachige PHP-Dokumentation (http://php.net/magic_quotes).
Um mit diesem Missstand aufzuräumen, kündigte Andi Gutmans (zusammen mit Zeev Suraski der Entwickler von PHP) umfassende Unicode-Unterstützung auf Basis von ICU für die nächste große Version (6.0) an, die für das dritte Quartal 2006 geplant ist. In der Präsentation von Andrei Zmievski von der PHP-Conference 2005 wird die Implementierung anhand vieler Beispiele erklärt. Unter anderem werden Konstrukte wie strlen($str)
oder $str{1}
problemlos mit Unicode funktionieren. Eine Diskussion über mögliche Änderungen in PHP 6 findet sich auf der Mailingliste php.internals (http://news.php.net/php.internals/start/17883 englischsprachig).
Geschichte
PHP wurde 1995 von Rasmus Lerdorf entwickelt. Der Begriff stand damals noch für Personal Home Page Tools und war ursprünglich eine Sammlung von Perl-Skripten, die Rasmus Lerdorf zur Protokollierung der Zugriffe auf seinen Online-Lebenslauf geschrieben hatte. Bald schuf Lerdorf jedoch eine größere Umsetzung in C. In dieser Programmiersprache wird PHP heute noch entwickelt. Das schließlich veröffentlichte PHP/FI (FI stand für Form Interpreter) war Perl sehr ähnlich, wenn auch viel eingeschränkter, einfacher, und ziemlich inkonsistent.
PHP 3 wurde von Andi Gutmans und Zeev Suraski neu geschrieben, da das inzwischen erschienene PHP/FI 2 ihrer Meinung nach für eCommerce zu schwach war. Auch die Bedeutung der Abkürzung „PHP“ wurde hierbei geändert. Lerdorf kooperierte mit Gutmans und Suraski, und so wurde die Entwicklung von PHP/FI eingestellt. Die von Gutmans und Suraski gegründete Firma Zend Technologies Ltd. entwickelte in der Folge die Zend Engine 1, das "Herz" von PHP 4.
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 populärer als der vorherige De-facto-Standard Perl, weil es als leichter erlernbar gilt.
Meilensteine
- PHP 1.0 erschienen am 8. Juni 1995
- PHP 2.0.0 bzw. PHP/FI, erschienen am 12. November 1997
- PHP 3.0.0, erschienen am 6. Juni 1998
- PHP 4.0.0, erschienen am 22. Mai 2000
- Einfache Objektorientierte Programmierung hinzugefügt
- Sessions hinzugefügt
- PHP 5.0.0, erschienen am 13. Juli 2004
- Erstmals ist durch viele hinzugefügte Sprachkonstrukte ernsthaftes objektorientiertes Programmieren möglich.
- Exceptions hinzugefügt
- Reflections API
- MySQLi (MySQL improved, objektorientiert und auf aktuelle MySQL-Versionen zugeschnitten)
- SQLite (vollstaendig client-basiertes, dem SQL Standard zu 95% entsprechendes Datenbanksystem)
- SimpleXML (einfacher XML-Parser, Änderungen von Einträgen sind möglich, aber es können keine neuen hinzugefügt oder gelöscht werden)
- DOM-Unterstützung (objektorientiert)
- PHP 5.1, erschienen am 24. November 2005
- Datenbankabstraktionsschicht hinzugefügt (PDO)
Code-Beispiel
Einfaches PHP-Script (gibt „Hallo Welt!“ aus):
<?php echo "Hallo Welt!"; ?>
Anmerkung: Das ´echo´ kann auch durch ´print´ ersetzt werden und es können auch 'einfache' statt "doppelte" Anführungszeichen verwendet werden.
Script in HTML integriert (gibt ebenfalls „Hallo Welt!“ auf der Webseite aus):
<html> <head><title>Hallo Welt!-Beispiel</title></head> <body> <?php echo "Hallo Welt!"; ?> </body> </html>
Lizenz und Bezug
PHP 3 wurde unter der GNU General Public License vertrieben. Seit Version 4 wird PHP unter der PHP License vertrieben, einer Softwarelizenz, die die freie Verwendung und Veränderung der Quelltexte erlaubt. Die Software kann somit kostenlos aus dem Internet geladen werden; daneben ist PHP auch schon bei einigen Betriebssystemen (z. B. bei allen relevanten Linux-Distributionen oder Mac OS X) im Lieferumfang enthalten. Seit dem 13. Juli 2004 liegt PHP in der komplett überarbeiteten Version 5 vor.
Performance
Da es sich bei PHP um eine Skriptsprache handelt, wird diese bei jedem Aufruf neu interpretiert. Dies führt bei umfangreichen Projekten schnell zu Performanceeinbrüchen. Abhilfe kann hier ein Vorinterpretieren mittels eines Op-Code Caches sein. Da dies bei PHP im Gegensatz zu Java nicht standardmäßig vorgesehen ist, muss man existierende Caches von Hand einbinden.
Beispiel für diese Caches sind Turck-mmCache und dessen Nachfolger eAccelerator, der IonCube-Accelarator (alles Open Source und Freeware) sowie der kommerzielle Zend Optimizer.
Eine höhere Performance erreicht PHP durch den Einsatz von Servermodulen (z. B. beim Apache). Da nicht bei jedem Skriptaufruf eine neue Instanz des Interpreters gestartet werden muss, kann der Code schneller übersetzt werden.
Verbreitete PHP-Applikationen
Es gibt verschiedene, sehr weit verbreitete Applikationen, die in PHP geschrieben wurden. Hier eine kleine Auswahl:
- wBB, vBulletin und phpBB – Foren-Software
- phpMyAdmin – grafische Benutzeroberfläche zur Verwaltung von MySQL-Datenbanken
- phpPgAdmin – grafische Benutzeroberfläche zur Verwaltung von PostgreSQL-Datenbanken
- PHP-Nuke – Portal-Software
- PostNuke, TYPO3, Mambo / Joomla! und Contenido – Content-Management-Systeme (CMS)
- WordPress, Serendipity – Software für das Erstellen von Weblogs
- Horde – Application Framework für Webanwendungen
Auch die Wikipedia basiert auf einer in PHP geschriebenen Applikation, dem MediaWiki.
Literatur
Gedruckte Werke zu PHP veralten aufgrund der permanenten Weiterentwicklungen von PHP schnell. Die aktuellen Informationen und Dokumentationen findet man auf der offiziellen Website php.net.
- Matthias Kannengiesser / Damir Enseleit: PHP 5 / MySQL 4, Studienausgabe. Franzis Verlag, ISBN 3-7723-7005-5
- George Schlossnagle: Professionelle PHP 5-Programmierung. Addison-Wesley, ISBN 3-8273-2198-0
- Jörg Krause: PHP 5, Grundlagen und Profiwissen. Hanser Fachbuchverlag, 2. Auflage, ISBN 3-446-40334-5
- Jens Ferner: PHP 5 Referenz. Data Becker, ISBN 3-8158-2369-2
- R. Samar (Hrsg.), C. Stocker (Hrsg.), A. Gildemeister et al., "PHP de Luxe - PHP5 Edition". mitp-Verlag, ISBN 3-826614828
- Martin Goldmann, Markus Schraudolph: PHP 5 – Die Neuerungen. Galileo Press, ISBN 3-89842-490-1
- Carsten Möhrke: Besser PHP programmieren. Galileo Press, ISBN 3-89842-381-6
- Christian Wenz, Tobias Hauser: PHP 5 Kompendium. Markt und Technik, ISBN 3-8272-6292-5
- Stefan Priebsch: Enterprise PHP Tools, entwickler.press, ISBN 3-9350-4293-0
Weblinks
Dies ist eine kleine Auswahl von Links zu PHP. Eine ausführliche Linksammlung findet sich im Open Directory Project.
- Offizielle Website mit deutschsprachigem Handbuch
- FAQ der Newsgroups de.comp.lang.php.*
- Linksammlung zum Thema PHP beim Open Directory Project
- PHP Core Mitentwickler
Zeitschriften
- PHP-Magazin deutschsprachig
- PHP Magazine englischsprachig
- PHP Solutions erscheint in mehreren Sprachen, darunter auch auf Deutsch
- php|architect englischsprachig
- ↑ Google Groups. (abgerufen am 11. Dezember 2018).
- ↑ PHP: History of PHP - Manual. (abgerufen am 25. August 2016).
- ↑ www.php.net. (abgerufen am 20. Juni 2019).
- ↑ The php Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 20. September 2018).