PHP Zelfstudie
Aan de slag met PHP
Zoeken…
Opmerkingen
PHP (recursief acroniem voor PHP: Hypertext Preprocessor) is een veel gebruikte open source programmeertaal. Het is vooral geschikt voor webontwikkeling. Het unieke van PHP is dat het zowel beginners als ervaren ontwikkelaars bedient. Het heeft een lage instapdrempel, dus het is gemakkelijk om mee te beginnen, en tegelijkertijd biedt het geavanceerde functies die in andere programmeertalen worden aangeboden.
Open source
Het is een open-sourceproject. Voel je vrij om mee te doen .
Taal specificatie
PHP heeft een taalspecificatie .
Ondersteunde versies
Momenteel zijn er drie ondersteunde versies : 5.6, 7.0 en 7.1.
Elke releasetak van PHP wordt volledig ondersteund gedurende twee jaar vanaf de eerste stabiele release. Na deze periode van twee jaar actieve ondersteuning, wordt elke tak vervolgens nog een jaar alleen ondersteund voor kritieke beveiligingsproblemen. Uitgaven tijdens deze periode worden op basis van behoefte uitgevoerd: er kunnen meerdere punten worden vrijgegeven, of geen, afhankelijk van het aantal rapporten.
Niet-ondersteunde versies
Nadat de drie jaar ondersteuning zijn voltooid, is het filiaal aan het einde van de levensduur en wordt het niet langer ondersteund.
Een tabel met takken aan het einde van de levensduur is beschikbaar.
Issue Tracker
Bugs en andere problemen worden bijgehouden op https://bugs.php.net/ .
Mail lijst
Discussies over PHP-ontwikkeling en -gebruik worden gehouden op de PHP-mailinglijsten .
Officiële documentatie
Help mee om de officiële PHP-documentatie te onderhouden of te vertalen.
U kunt de editor gebruiken op edit.php.net . Bekijk onze gids voor bijdragers .
versies
PHP 7.x
Versie | Ondersteund tot | Publicatiedatum |
---|---|---|
7.1 | 2019/12/01 | 2016/12/01 |
7.0 | 2018/12/03 | 2015/12/03 |
PHP 5.x
Versie | Ondersteund tot | Publicatiedatum |
---|---|---|
5.6 | 2018/12/31 | 2014/08/28 |
5.5 | 2016/07/21 | 2013/06/20 |
5.4 | 2015/09/03 | 2012-03-01 |
5.3 | 2014/08/14 | 2009-06-30 |
5.2 | 2011-01-06 | 2006-11-02 |
5.1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Versie | Ondersteund tot | Publicatiedatum |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002/12/27 |
4.2 | 2002/09/06 | 2002/04/22 |
4.1 | 2002/03/12 | 2001/12/10 |
4.0 | 2001/06/23 | 2000/05/22 |
Oude versies
Versie | Ondersteund tot | Publicatiedatum |
---|---|---|
3.0 | 2000/10/20 | 1998/06/06 |
2.0 | 1997/11/01 | |
1.0 | 1995/06/08 |
HTML-uitvoer van webserver
PHP kan worden gebruikt om inhoud toe te voegen aan HTML-bestanden. Terwijl HTML rechtstreeks door een webbrowser wordt verwerkt, worden PHP-scripts door een webserver uitgevoerd en wordt de resulterende HTML naar de browser verzonden.
De volgende HTML-opmaak bevat een PHP-instructie die Hello World!
toevoegt Hello World!
naar de uitgang:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Wanneer dit wordt opgeslagen als een PHP-script en wordt uitgevoerd door een webserver, wordt de volgende HTML verzonden naar de browser van de gebruiker:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
ook een sneltoetssyntaxis waarmee u onmiddellijk een waarde kunt afdrukken. Voorafgaand aan PHP 5.4.0, werkt deze korte syntaxis alleen als de configuratie-instelling short_open_tag is ingeschakeld.
Overweeg bijvoorbeeld de volgende code:
<p><?= "Hello world!" ?></p>
De uitvoer is identiek aan de uitvoer van het volgende:
<p><?php echo "Hello world!"; ?></p>
In real-world applicaties moet alle data-uitvoer door PHP naar een HTML-pagina correct worden ontsnapt om XSS - aanvallen ( cross-site scripting ) of tekstbeschadiging te voorkomen.
Zie ook: Strings en PSR-1 , waarin best practices worden beschreven, inclusief het juiste gebruik van korte tags ( <?= ... ?>
).
Niet-HTML-uitvoer van webserver
In sommige gevallen kan het nodig zijn om het standaard inhoudstype van de webserver te negeren wanneer u met een webserver werkt. Er kunnen gevallen zijn waarin u gegevens als plain text
, JSON
of XML
moet verzenden, bijvoorbeeld.
De functie header()
kan een onbewerkte HTTP-header verzenden. U kunt de kop Content-Type
toevoegen om de browser op de hoogte te stellen van de inhoud die we verzenden.
Overweeg de volgende code, waarbij we Content-Type
als text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Dit levert een document met platte tekst op met de volgende inhoud:
Hallo Wereld
Gebruik in plaats daarvan het inhoudstype application/json
om JSON- inhoud te produceren:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Dit levert een document van het type application/json
met de volgende inhoud:
{"response": "Hallo wereld"}
Merk op dat de functie header()
moet worden aangeroepen voordat PHP enige uitvoer produceert, anders heeft de webserver al headers voor het antwoord verzonden. Overweeg dus de volgende code:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Dit geeft een waarschuwing:
Waarschuwing: kan headerinformatie niet wijzigen - headers zijn al verzonden door (uitvoer gestart op /dir/example.php:2) in /dir/example.php op regel 3
Bij gebruik van header()
moet de uitvoer de eerste byte zijn die door de server wordt verzonden. Om deze reden is het belangrijk om geen lege regels of spaties aan het begin van het bestand te hebben vóór de PHP opening tag <?php
. Om dezelfde reden wordt het als best practice beschouwd (zie PSR-2 ) om de PHP-afsluittag ?>
Weg te laten uit bestanden die alleen PHP bevatten en uit blokken PHP-code helemaal aan het einde van een bestand.
Bekijk het gedeelte over het bufferen van uitvoer om te leren hoe u uw inhoud kunt 'vangen' in een variabele om later uit te voeren, bijvoorbeeld na het uitvoeren van headers.
Hallo Wereld!
De meest gebruikte taalconstructie om uitvoer in PHP af te drukken is echo
:
echo "Hello, World!\n";
Als alternatief kunt u ook print
:
print "Hello, World!\n";
Beide verklaringen vervullen dezelfde functie, met kleine verschillen:
-
echo
heeft eenvoid
retour, terwijlprint
eenint
retourneert met een waarde van1
-
echo
kan meerdere argumenten aannemen (alleen zonder haakjes), terwijlprint
slechts één argument gebruikt -
echo
is iets sneller danprint
Zowel echo
als print
zijn taalconstructies, geen functies. Dat betekent dat ze geen haakjes nodig hebben rond hun argumenten. Voor cosmetische consistentie met functies kunnen haakjes worden opgenomen. Uitgebreide voorbeelden van het gebruik van echo
en print
zijn elders beschikbaar .
C-stijl printf
en gerelateerde functies zijn ook beschikbaar, zoals in het volgende voorbeeld:
printf("%s\n", "Hello, World!");
Zie De waarde van een variabele uitvoeren voor een uitgebreide introductie van uitvoervariabelen in PHP.
Instructie scheiding
Net als de meeste andere talen in C-stijl, wordt elke instructie afgesloten met een puntkomma. Ook wordt een afsluitende tag gebruikt om de laatste coderegel van het PHP-blok te beëindigen.
Als de laatste regel van de PHP-code eindigt op een puntkomma, is de afsluitende tag optioneel als er geen code volgt na die laatste coderegel. We kunnen bijvoorbeeld de eindtag weglaten na echo "No error";
in het volgende voorbeeld:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Als er echter een andere code volgt na uw PHP-codeblok, is de afsluitende tag niet langer optioneel:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
We kunnen ook de puntkomma van de laatste instructie in een PHP-codeblok weglaten als dat codeblok een afsluitende tag heeft:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Het wordt over het algemeen aanbevolen om altijd een puntkomma te gebruiken en een afsluitende tag te gebruiken voor elk PHP-codeblok behalve het laatste PHP-codeblok, als er geen code meer volgt op dat PHP-codeblok.
Dus je code zou er in principe zo uit moeten zien:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP CLI
PHP kan ook rechtstreeks vanaf de opdrachtregel worden uitgevoerd met behulp van de CLI (Command Line Interface).
CLI is in principe hetzelfde als PHP van webservers, behalve enkele verschillen in standaard invoer en uitvoer.
triggering
De PHP CLI biedt vier manieren om PHP-code uit te voeren:
- Standaard invoer. Voer de
php
opdracht zonder argumenten uit, maar pijp er PHP-code in:echo '<?php echo "Hello world!";' | php
- Bestandsnaam als argument. Voer de
php
opdracht uit met de naam van een PHP-bronbestand als het eerste argument:php hello_world.php
- Code als argument. Gebruik de optie
-r
in de opdrachtphp
, gevolgd door de uit te voeren code. De<?php
open tags zijn niet vereist, omdat alles in het argument als PHP-code wordt beschouwd:php -r 'echo "Hello world!";'
- Interactieve shell. Gebruik de optie
-a
in dephp
opdracht om een interactieve shell te starten. Typ (of plak) PHP-code en druk op Return :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
uitgang
Alle functies of besturingselementen die HTML-uitvoer produceren in webserver PHP kunnen worden gebruikt om uitvoer te produceren in de stdout-stroom (bestandsbeschrijving 1), en alle acties die uitvoer produceren in foutenlogboeken in webserver PHP zullen uitvoer produceren in de stderr-stroom (bestand descriptor 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Shell-opdrachtregel $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
Invoer
Zie: Command Line Interface (CLI)
PHP ingebouwde server
PHP 5.4+ wordt geleverd met een ingebouwde ontwikkelingsserver. Het kan worden gebruikt om applicaties uit te voeren zonder een productie-HTTP-server zoals nginx of Apache te hoeven installeren. De ingebouwde server is alleen ontworpen om te worden gebruikt voor ontwikkelings- en testdoeleinden.
Het kan worden gestart met behulp van de vlag -S
:
php -S <host/ip>:<port>
Voorbeeld gebruik
- Maak een
index.php
bestand met:
<?php
echo "Hello World from built-in PHP server";
Voer de opdracht
php -S localhost:8080
uit vanaf de opdrachtregel. Neem geenhttp://
. Hierdoor wordt een webserver gestart die luistert op poort 8080 met behulp van de huidige map waarin u zich bevindt als document root.Open de browser en ga naar
http://localhost:8080
. Je zou je "Hallo wereld" pagina moeten zien.
Configuratie
Gebruik de vlag -t
om de standaarddocument root (dwz de huidige map) te overschrijven:
php -S <host/ip>:<port> -t <directory>
Als u bijvoorbeeld een public/
map in uw project heeft, kunt u uw project vanuit die map bedienen met php -S localhost:8080 -t public/
.
logs
Telkens wanneer een verzoek wordt ingediend bij de ontwikkelingsserver, wordt een logboekinvoer zoals hieronder geschreven naar de opdrachtregel.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
PHP-tags
Er zijn drie soorten tags om PHP-blokken in een bestand aan te duiden. De PHP-parser zoekt naar de openingstags en (indien aanwezig) sluitingstags om de te interpreteren code af te bakenen.
Standaard tags
Deze tags zijn de standaardmethode om PHP-code in een bestand in te sluiten.
<?php
echo "Hello World";
?>
Echo Tags
Deze tags zijn beschikbaar in alle PHP-versies en sinds PHP 5.4 zijn altijd ingeschakeld. In vorige versies konden echo-tags alleen worden ingeschakeld in combinatie met korte tags.
<?= "Hello World" ?>
Korte tags
U kunt deze tags in- of uitschakelen met de optie short_open_tag
.
<?
echo "Hello World";
?>
Korte tags:
- zijn niet toegestaan in alle belangrijke PHP- coderingsstandaarden
- worden afgeraden in de officiële documentatie
- zijn standaard uitgeschakeld in de meeste distributies
- de verwerkingsinstructies van inline XML verstoren
- worden door de meeste open source-projecten niet geaccepteerd in code-inzendingen
ASP-tags
Door de optie asp_tags
, kunnen tags in ASP-stijl worden gebruikt.
<%
echo "Hello World";
%>
Dit zijn een historische gril en mogen nooit worden gebruikt. Ze werden verwijderd in PHP 7.0.