PHP
PHP
Paradigma Imperatief
Objectgeoriënteerd (vanaf PHP 3)
Verschenen 1995[1]
Ontworpen door Rasmus Lerdorf
Ontwikkeld door The PHP Group
Huidige versie 8.0.7 / 7.4.12 / 7.3.21 (31 mei 2021 / 27 oktober 2020 / 6 augustus 2020)[2]
Typesysteem dynamisch, zwak
Dialecten Hack
Beïnvloed door C, Perl, Python
Besturingssysteem Multiplatform
Licentie PHP-licentie 3.01
Bestandsextensies .php, .php3, .php4, .php5, .inc.php, .inc, .phtml, .phps
Website https://www.php.net/
Portaal  Portaalicoon   Informatica

PHP (PHP: Hypertext Preprocessor) is een scripttaal, die bedoeld is om op webservers dynamische webpagina's te creëren. PHP is in 1994 ontworpen door Rasmus Lerdorf, een senior softwareontwikkelaar bij IBM. Lerdorf gebruikte Perl als inspiratie.

Aanvankelijk stonden de letters PHP voor Personal Home Page (de volledige naam was Personal Home Page/Forms Interpreter, PHP/FI). Sinds PHP 3.0 is de betekenis een recursief acroniem geworden: PHP: Hypertext Preprocessor. Deze naam geeft aan waar de taal meestal voor gebruikt wordt: informatie verwerken tot hypertext (meestal HyperText Markup Language (HTML) en Extensible HyperText Markup Language (XHTML)).

Kenmerken

PHP is een scripttaal en is vergelijkbaar met Perl, Python en Ruby. Qua syntaxis lijkt PHP het meest op C. In tegenstelling tot C is het in PHP (met name PHP5) mogelijk objectgeoriënteerd te programmeren, net als in bijvoorbeeld Java, C++ en C♯. Net als bij veel andere scripttalen moeten variabelen voorafgegaan worden door een dollarteken ('$'). Dit in tegenstelling tot talen als C, C++ en Java. Dit is overgenomen uit de scripttaal Perl, waarvan PHP mede is afgeleid. Naast server-side scripting kan PHP ook gebruikt worden via de opdrachtregel of in grafische applicaties, bijvoorbeeld met PHP-GTK (PHP met GTK+).

PHP maakt zowel objectgeoriënteerd ('programmeren met klassen') als procedureel programmeren ('programmeren met functies') mogelijk. Oorspronkelijk was procedureel programmeren het belangrijkste, maar de aandacht verschuift steeds meer naar objectgeoriënteerd programmeren.[bron?]

Een server-side scripting-taal, die hoofdzakelijk wordt gebruikt om op de webserver dynamische webpagina's te creëren, is voor de gebruiker onzichtbaar. Alleen het resultaat is zichtbaar en dat ziet eruit als een gewone HTML-pagina. De voordelen van PHP zijn: het is opensourcesoftware, het is zeer populair, makkelijk te leren en er is een brede ondersteuning mogelijk op het internet.

PHP wordt vaak in combinatie met een relationele database gebruikt. De meest gebruikte relationele databases voor PHP zijn MySQL en PostgreSQL. Het is ook mogelijk om andere databases te gebruiken met PHP, zoals MongoDB en mSQL.

Er zijn veel verschillende toepassingsmogelijkheden voor PHP, zoals het verwerken van data, het aanspreken van databases, bestandsbewerking en het genereren van afbeeldingen en XML. Een deel hiervan zit ingebakken in de taal, een deel hiervan is via extensies en modules beschikbaar (o.a. via PEAR).

Geschiedenis

PHP werd in 1994 ontwikkeld door Rasmus Lerdorf. De eerste publieke versie werd uitgegeven in 1995, alsook versie 2. Zeev Suraski en Andi Gutmans, twee Israëlische ontwikkelaars aan de Technion IIT, herschreven de parser in 1997 en vormden de basis voor PHP 3 en veranderde hiermee de naam in PHP: Hypertext Preprocessor. Het ontwikkelteam bracht PHP/FI 2 officieel in november 1997 uit, na maanden van beta-tests. Hierna begon de publieke test van PHP 3 en in juni 1998 werd PHP 3 officieel uitgebracht. Suraski en Gutmans begonnen hierna met het herschrijven van de PHP parser, met de Zend Engine in 1999 als resultaat. Hiermee werd Zend Technologies opgericht in Ramat Gan, Israël.

Op 22 mei 2000 werd PHP 4, aangedreven door Zend Engine 1.0, uitgebracht. Op 13 juli 2004 werd PHP 5 uitgebracht, aangedreven door de nieuwe Zend Engine II.

Ondanks dat PHP 5 al sinds 2004 beschikbaar is, gebruiken veel webservers pas sinds begin 2007 PHP 5, omdat eerdere versies niet stabiel genoeg waren. De meest recente stabiele versie is 5.6.29 (8 december 2016). Dit is tevens de laatste release van PHP 5 onder actieve ondersteuning. Vanaf 2017 tot en met 2018 zullen voor PHP 5.6 alleen nog beveiligingsaanpassingen gedaan worden.

De belangrijkste kenmerken van PHP 5 zijn het verbeterde objectgeoriënteerd programmeren, de hogere snelheid, de mogelijkheid om SQLite aan te spreken en de vernieuwde Extensible Markup language (XML)-bibliotheek. Overigens zit er nog een flinke ontwikkeling tussen de versie 5.0 uit 2004 en de laatste versie 5.6.

Op 3 december 2015 kwam PHP 7.0.0 beschikbaar, met sterk verbeterde snelheid en nieuwe functionaliteiten waaronder typehinting op scalaire types en returntypes.

Op 1 december 2016 verscheen PHP 7.1.0. Nieuw in deze versie zijn onder andere: nullable-types; void-returntype voor functies en itereerbaar pseudotype.

Een versie 6 is nooit verschenen. Er is wel een aanzet voor geweest en een belangrijk onderdeel zou ondersteuning voor Unicode moeten worden. Er was de nodige kritiek op de implementatie en er was ook een tekort aan ontwikkelaars die de benodigde grote aanpassingen konden uitvoeren. Uiteindelijk is de ontwikkeling in maart 2010 gestrand. Verschillende onderdelen die in versie 6 zouden komen, zijn naar versies 5.3 overgezet. Andere aanpassingen zoals traits en closure re-binding zijn in PHP 5.4 terecht gekomen.

Om verwarring te voorkomen over de oorspronkelijk beoogde versie 6 (bijvoorbeeld boeken die al geschreven werden) en de werkelijke opvolger van de PHP 5-tak, werd besloten om door te nummeren bij 7.

Op 26 november 2020 is PHP 8 verschenen met sterk verbeterende functionaliteiten.

Gebruik

PHP wordt veel gebruikt om op webservers dynamisch webpagina's te creëren. Andere bekende server-sidescripttalen zijn Java Server Pages (JSP), ColdFusion en Active Server Pages (ASP). De code van de pagina wordt op de webserver uitgevoerd en het resultaat wordt naar de computer van de bezoeker gestuurd en in de webbrowser getoond. Dit in tegenstelling tot client-side-scripting (zoals JavaScript), waarbij de webbrowser eerst de pagina van de webserver downloadt en vervolgens zelf (op de computer van de bezoeker) code uitvoert.

Wanneer een browser een PHP-document oproept, wordt op de server eerst de in het document opgenomen PHP-code uitgevoerd. Dit gebeurt door de PHP-interpreter (de PHP-engine). Het resultaat (meestal HTML) wordt door de webserver naar de browser gestuurd. PHP kan echter ook andere documenttypen, zoals afbeeldingen of XML, genereren. PHP-documenten hebben vaak de extensie .php, maar ook de oudere extensies worden nog (weliswaar sporadisch) gebruikt.

PHP ondersteunt ook diverse extensies die (in de Windows-versie) als aparte module geleverd worden. Alle documentatie is in de PHP-handleiding te vinden. Onder andere door de gemakkelijk bereikbare documentatie (centraal op een locatie) is PHP populair geworden onder webprogrammeurs.[bron?]

PHP wordt vaak gebruikt in combinatie met het besturingssysteem Linux, de Apache webserver en de MySQL databasesoftware. Een dergelijke combinatie wordt afgekort tot LAMP. Het komt ook weleens voor dat men Windows gebruikt in plaats van Linux. WAMP is hierbij de afkorting voor systemen die Windows gebruiken en er wordt weleens de afkorting MAMP gebruikt voor de Apple Macintosh. Ook zijn er kant en klare programma's die een volledige WAMP-omgeving installeren. Voorbeelden hiervan zijn WAMP en XAMPP.

Populariteit

PHP is erg populair en wordt voor allerlei webapplicaties gebruikt, zoals bulletinboards/forums, contentmanagementsystemen, blogs en wiki's. Inmiddels worden ruim 26 miljoen websites gegenereerd met behulp van PHP.[bron?]

Syntaxis

In PHP-documenten kan op meerdere manieren tekst aan de gebruiker worden gepresenteerd. In server-side documenten kan PHP vrij tussen de HTML-tags worden aangeroepen. In onderstaand voorbeeld wordt alle tekst buiten de PHP-tags automatisch naar de browser gestuurd. Alles binnen de PHP-tags wordt door de PHP-interpreter uitgevoerd. Op deze wijze kunnen dynamische HTML-documenten worden gecreëerd.

<!DOCTYPE html>
 <meta charset=utf-8>
 <title>PHP Test</title>
 <?php
  // Dit is een regel met commentaar
  /* Dit zijn twee regels
  met commentaar*/
  echo 'Hello World';
 ?>
 

In PHP kunnen strings zowel met enkele als met dubbele aanhalingstekens geschreven worden. Variabelen beginnen met een dollarteken. Als strings met dubbele aanhalingstekens geschreven worden dan worden de variabelen die gebruikt worden in de string vervangen door hun waarde (dit wordt variable interpolation genoemd).

Hieronder een voorbeeld dat variable interpolation gebruikt om de URL van dit artikel aan de gebruiker te melden:

<?php
 
 $url = "http://nl.wikipedia.org/wiki/PHP";
 
 echo "U bevindt zich momenteel op $url Welkom!";
 //Of
 echo "U bevindt zich momenteel op ".$url.". Welkom!";
 ?>
 

Om met een database te interacteren dient PHP eerst naar een DBMS (bijvoorbeeld MySQL) te verbinden. Hiervoor kan onder andere de mysqli-library van PHP worden gebruikt:

<?php
 $db_hostnaam = "localhost"; // De locatie waar de MySQL-service draait
 $db_gebruiker = "gebruikersnaam"; // De gebruikersnaam waarmee naar de database kan worden verbonden
 $db_wachtwoord = "wachtwoord"; // Het wachtwoord waarmee naar de database kan worden verbonden
 $db_naam = "database"; // De naam van de database zelf, deze moet via de DBMS worden aangemaakt
 
 $mysqli = new mysqli($db_hostnaam, $db_gebruiker, $db_wachtwoord, $db_naam);
 ?>
 

Vervolgens kan er na de verbinding, door middel van de SQL-taal, gegevens worden opgevraagd. Hieronder een voorbeeld om een nieuwsartikel op te halen:

<?php
 
 $query = "SELECT * FROM nieuwsartikelen";
 $result = $mysqli->query($query);
 $row = $result->fetch_assoc();
 echo htmlentities($row["titel"]);
 echo htmlentities($row["bericht"]);
 
 ?>
 

Veiligheid

De totaalsom van in PHP geschreven applicaties bleek over de jaren 1996-2003 goed te zijn voor ongeveer 29% van alle beveiligingskwetsbaarheden (van bijvoorbeeld cross-site scripting tot denial of service) die gemeld en geregistreerd waren met een CVE-verwijzing in de National Vulnerability Database[3][4], een door de Amerikaanse overheid opgezette website waar beveiligingsproblemen aan software worden aangemeld. Enkele specifieke taal-eigenschappen en (standaard ingestelde) configuratieparameters (zoals magic quotes en register_globals.[5]) bleken PHP in het verleden onveilig te maken. Ondersteuning voor magic_quotes_gpc en register_globals is sinds versie 5.3.0 gemarkeerd als uitgefaseerd en sinds versie 5.4.0 volledig uit PHP verwijderd.[5][6]

Daarnaast worden ook in PHP zelf met enige regelmaat beveiligingskwetsbaarheden aangetroffen en opgelost, ongeveer 390 stuks (geteld tot 22 september 2013).[7]

Ten minste een van die beveiligingskwetsbaarheden werd in 2012 door Nederlanders ontdekt, bij de National Vulnerability Database bekend als CVE-2012-1823. De kwetsbaarheid was dat de broncode van PHP-pagina's op sommige serverconfiguraties bleek op te vragen door slechts een enkele parameter aan de URL van de pagina toe te voegen.[8] Versies 5.3.12 en 5.4.2 werden speciaal uitgebracht om een oplossing voor deze kwetsbaarheid te bieden.

Ontwikkelomgevingen

Veel broncode-editors bieden ondersteuning voor PHP, zoals syntaxiskleuring en automatische aanvulling. Enkele hiervan zijn:

Daarnaast zijn er voor PHP5 verschillende frameworks beschikbaar die bepaalde taken van de programmeur overnemen. Enkele hiervan zijn:

Met behulp van PHPDoc kan documentatie vanuit de broncode gegenereerd worden; dit is vergelijkbaar met Javadoc voor Java. Ook voor unittesten is een standaard oplossing beschikbaar in de vorm van PHPUnit.

Zie ook

Externe links

Wikibooks heeft meer over dit onderwerp: Cursus programmeren in PHP.

Informatie

Artikel PHP in de Nederlandse Wikipedia nam de volgende plaatsen in de lokale populariteitsranglijst in beslag:

De gepresenteerde inhoud van het Wikipedia-artikel werd in 2021-06-14 geëxtraheerd op basis van https://nl.wikipedia.org/?curid=935597