PHP

Uit Wikipedia, de vrije encyclopedie
(Doorverwezen vanaf Php)
Ga naar: navigatie, zoeken
PHP
PHP-logo.svg
Paradigma Imperatief
Objectgeoriënteerd (vanaf PHP 3)
Verschenen in 1995 [1]
Ontworpen door Rasmus Lerdorf
Ontwikkeld door The PHP Group
Huidige versie 5.6.1 (2 oktober 2014)
5.6.0 (28 augustus 2014)
5.5.17 (18 september 2014)
5.4.33 (18 september 2014)
5.3.29 (14 augustus 2014)[2]
Typesysteem dynamisch, zwak
Beïnvloed door C, Perl, Python
Besturingssysteem Multiplatform
Licentie PHP-licentie 3.01
Bestandsextensies .php, .php3, .php4, .php5, .inc.php, .inc, .phtml, .phps
Website 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[bewerken]

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 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 object- als functiegeoriënteerd programmeren mogelijk.[bron?] Oorspronkelijk was functiegeoriënteerd programmeren het belangrijkste, maar de aandacht verschuift steeds meer naar objectgeoriënteerd programmeren.

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).

Object-georiënteerdheid[bewerken]

PHP wordt vanwege het lage instapniveau gezien als een van de makkelijkste webtalen en voorziet tegelijk in grote doorgroeimogelijkheden. Zo is het met PHP mogelijk objectgeoriënteerd (OO, Object Oriented) te programmeren. Bij OO programmeren (OOP) maakt men klassen van waaruit weer objecten gemaakt kunnen worden. De klassen zijn als het ware een recept, een beschrijving van het object. Een technische tekening van een fiets is vergelijkbaar met een klasse en de fiets zelf is vergelijkbaar met een object. In de klasse zijn de onderdelen van de fiets beschreven (properties, bijvoorbeeld wielen en trappers) en de mogelijkheden van een fiets (methods, bijvoorbeeld fietsen, remmen, bellen, licht aandoen, op slot doen). Van een klasse kunnen dus verscheidene objecten (zij het met verschillende parameters) worden gemaakt. Zo zou je met dezelfde onderdelen bijvoorbeeld ook een ligfiets of een driewieler kunnen maken. Of meer soortgelijke fietsen verschillend in kleur.

Geschiedenis[bewerken]

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 PHP5, omdat eerdere versies niet stabiel genoeg waren. De meest recente stabiele versie is 5.5.16 (21 augustus 2014). 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.

Gebruik[bewerken]

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 wel eens voor dat men Windows gebruikt in plaats van Linux. WAMP is hierbij de afkorting voor systemen die Windows gebruiken en er wordt wel eens 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[bewerken]

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[bewerken]

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!";
 
?>

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["bericht"]);
 
?>

Veiligheid[bewerken]

De totaalsom van in PHP geschreven applicaties (waaronder bijvoorbeeld Joomla en Drupal) 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 geregisterd 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_gpc 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[bewerken]

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[bewerken]

Externe links[bewerken]

Bronnen, noten en/of referenties
Wikibooks Wikibooks heeft een studieboek over dit onderwerp: Cursus programmeren in PHP.