PHP Handledning
Komma igång med PHP
Sök…
Anmärkningar
PHP (rekursiv förkortning för PHP: Hypertext Preprocessor) är ett allmänt använt program för öppen källkod. Det är särskilt lämpat för webbutveckling. Det unika med PHP är att det tjänar både nybörjare och erfarna utvecklare. Det har en låg inträdesbarriär så det är lätt att komma igång med, och samtidigt ger det avancerade funktioner som erbjuds på andra programmeringsspråk.
Öppen källa
Det är ett öppen källkodsprojekt. Känn dig fri att engagera dig .
Språkspecifikation
PHP har en språkspecifikation .
Stödda versioner
För närvarande finns det tre versioner som stöds : 5.6, 7.0 och 7.1.
Varje släppgren av PHP stöds fullt ut i två år från dess ursprungliga stabila utgåva. Efter denna tvåårsperiod med aktivt stöd stöds varje gren sedan ytterligare ett år för kritiska säkerhetsfrågor. Releaser under denna period görs efter behov: det kan finnas flera punktsreleaser, eller inga, beroende på antalet rapporter.
Versioner som inte stöds
När de tre år av stöd har slutförts når filialen sitt livslängd och stöds inte längre.
Det finns en tabell över grenarna på slutet av livet .
Utgivningsspårare
Bugs och andra problem spåras på https://bugs.php.net/ .
E-postlistor
Diskussioner om PHP-utveckling och användning hålls på PHP-postlistorna .
Officiell dokumentation
Snälla hjälp till att underhålla eller översätta den officiella PHP-dokumentationen .
Du kan använda redigeraren på edit.php.net . Kolla in vår guide för bidragsgivare .
versioner
PHP 7.x
Version | Stödde tills | Utgivningsdatum |
---|---|---|
7,1 | 2019/12/01 | 2016/12/01 |
7,0 | 2018/12/03 | 2015/12/03 |
PHP 5.x
Version | Stödde tills | Utgivningsdatum |
---|---|---|
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
Version | Stödde tills | Utgivningsdatum |
---|---|---|
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 |
Äldre versioner
Version | Stödde tills | Utgivningsdatum |
---|---|---|
3,0 | 2000/10/20 | 1998/06/06 |
2,0 | 1997/11/01 | |
1,0 | 1995/06/08 |
HTML-utdata från webbservern
PHP kan användas för att lägga till innehåll till HTML-filer. Medan HTML behandlas direkt av en webbläsare, exekveras PHP-skript av en webbserver och den resulterande HTML skickas till webbläsaren.
Följande HTML-markering innehåller ett PHP-uttalande som lägger till Hello World!
till utgången:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
När detta sparas som ett PHP-skript och körs av en webbserver skickas följande HTML till användarens webbläsare:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
har också en genvägssyntax, som låter dig omedelbart skriva ut ett värde. Innan PHP 5.4.0 fungerar den här korta syntaxen bara med inställningen av inställningen för kort_open_tag aktiverad.
Tänk till exempel på följande kod:
<p><?= "Hello world!" ?></p>
Dess utgång är identisk med utgången på följande:
<p><?php echo "Hello world!"; ?></p>
I verkliga applikationer, bör alla utdata från PHP till en HTML-sida korrekt flydde för att förhindra XSS ( Cross-site scripting ) attacker eller text korruption.
Se även: Strängar och PSR-1 , som beskriver bästa praxis, inklusive korrekt användning av korta taggar ( <?= ... ?>
).
Utgång utan HTML från webbservern
I vissa fall, när du arbetar med en webbserver, kan det vara nödvändigt att åsidosätta webbserverns standardinnehållstyp. Det kan förekomma fall där du till exempel behöver skicka data som plain text
, JSON
eller XML
.
Funktionen header()
kan skicka en rå HTTP-rubrik. Du kan lägga till rubriken Content-Type
att meddela webbläsaren om innehållet vi skickar.
Tänk på följande kod, där vi ställer in Content-Type
som text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Detta kommer att producera ett vanligt textdokument med följande innehåll:
Hej världen
För att producera JSON- innehåll använder du istället application/json
innehållstyp:
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);
Detta kommer att producera ett dokument av typen application/json
med följande innehåll:
{"respons": "Hello World"}
Observera att funktionen header()
måste anropas innan PHP producerar någon utgång, annars kommer webbservern redan att ha skickat rubriker för svaret. Så överväg följande kod:
// 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";
Detta ger en varning:
Varning: Kan inte ändra rubrikinformation - rubriker som redan har skickats av (utgång startade på /dir/example.php:2) i /dir/example.php på rad 3
När du använder header()
måste dess utgång vara den första byten som skickas från servern. Av denna anledning är det viktigt att inte ha tomma rader eller mellanslag i början av filen före PHP-öppningstaggen <?php
. Av samma anledning anses det vara bästa praxis (se PSR-2 ) att utelämna PHP-stängningstaggen ?>
Från filer som endast innehåller PHP och från block av PHP-kod i slutet av en fil.
Se avsnittet för utmatning av buffring för att lära dig hur du "fångar" ditt innehåll till en variabel som ska matas ut senare, till exempel efter att du har matat ut rubriker.
Hej världen!
Det mest använda språket för att skriva ut i PHP är echo
:
echo "Hello, World!\n";
Alternativt kan du också använda print
:
print "Hello, World!\n";
Båda uttalandena utför samma funktion med mindre skillnader:
-
echo
har envoid
retur, medanprint
returnerar ettint
med ett värde på1
-
echo
kan ta flera argument (utan parenteser), medanprint
bara tar ett argument -
echo
är något snabbare änprint
Både echo
och print
är språkkonstruktioner, inte funktioner. Det betyder att de inte kräver parenteser kring sina argument. För kosmetisk konsistens med funktioner kan parenteser inkluderas. Omfattande exempel på användning av echo
och print
är tillgängliga någon annanstans .
C-stil printf
och relaterade funktioner finns också tillgängliga, som i följande exempel:
printf("%s\n", "Hello, World!");
Se Utföra värdet på en variabel för en omfattande introduktion av utmatningsvariabler i PHP.
Instruktionsseparation
Precis som de flesta andra språk i C-stil avslutas varje uttalande med en semikolon. Dessutom används en avslutande tagg för att avsluta den sista kodraden för PHP-blocket.
Om den sista raden med PHP-kod slutar med en semikolon är stängningstaggen valfri om det inte finns någon kod som följer den sista kodraden. Vi kan till exempel lämna slutetiketten efter echo "No error";
i följande exempel:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Men om det finns någon annan kod efter ditt PHP-kodblock, är stängningstaggen inte längre valfri:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Vi kan också utelämna semikolonet för det sista uttalandet i ett PHP-kodblock om det kodblocket har en avslutande tagg:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Det rekommenderas vanligtvis att alltid använda en semikolon och använda en stängningstagg för varje PHP-kodblock förutom det sista PHP-kodblocket, om inte mer kod följer det PHP-kodblocket.
Så din kod bör i princip se ut så här:
<?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 också köras från kommandoraden direkt med CLI (Command Line Interface).
CLI är i princip samma som PHP från webbservrar, förutom vissa skillnader vad gäller standardinmatning och -utgång.
utlösande
PHP CLI tillåter fyra sätt att köra PHP-kod:
- Standardinmatning. Kör
php
kommandot utan några argument, men rör PHP-kod till det:echo '<?php echo "Hello world!";' | php
- Filnamn som argument. Kör
php
kommandot med namnet på en PHP-källfil som det första argumentet:php hello_world.php
- Kod som argument. Använd alternativet
-r
iphp
kommandot, följt av koden som ska köras. De<?php
öppna taggarna krävs inte, eftersom allt i argumentet betraktas som PHP-kod:php -r 'echo "Hello world!";'
- Interaktivt skal. Använd alternativet
-a
iphp
kommandot för att starta ett interaktivt skal. Skriv sedan (eller klistra in) PHP-kod och tryck på return :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Produktion
Alla funktioner eller kontroller som producerar HTML-utdata i webbservern PHP kan användas för att producera utdata i stdout-strömmen (filbeskrivning 1), och alla åtgärder som producerar utdata i felloggar i webbservern PHP kommer att producera utdata i stderr-strömmen (fil deskriptor 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-kommandorad $ 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
Inmatning
Se: Kommandoradsgränssnitt (CLI)
PHP inbyggd server
PHP 5.4+ levereras med en inbyggd utvecklingsserver. Det kan användas för att köra applikationer utan att behöva installera en produktions-HTTP-server som nginx eller Apache. Den inbyggda servern är endast utformad för att användas för utvecklings- och teständamål.
Det kan startas med -S
flaggan:
php -S <host/ip>:<port>
Exempel på användning
- Skapa en
index.php
fil som innehåller:
<?php
echo "Hello World from built-in PHP server";
Kör kommandot
php -S localhost:8080
från kommandoraden. Inkludera intehttp://
. Detta startar en webbserver som lyssnar på port 8080 med den aktuella katalogen som du är i som dokumentroten.Öppna webbläsaren och navigera till
http://localhost:8080
. Du bör se din "Hello World" -sida.
Konfiguration
För att åsidosätta standarddokumentroten (dvs. den aktuella katalogen) använder du flaggan -t
:
php -S <host/ip>:<port> -t <directory>
Om du t.ex. har en public/
katalog i ditt projekt kan du betjäna ditt projekt från den katalogen med php -S localhost:8080 -t public/
.
loggar
Varje gång en begäran görs från utvecklingsservern skrivs en loggpost som nedan till kommandoraden.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
PHP-taggar
Det finns tre typer av taggar för att beteckna PHP-block i en fil. PHP-parsern letar efter öppnings- och (om det finns) stängningstaggar för att avgränsa koden som ska tolkas.
Standard Taggar
Dessa taggar är standardmetoden för att bädda in PHP-kod i en fil.
<?php
echo "Hello World";
?>
Echo Taggar
Dessa taggar är tillgängliga i alla PHP-versioner, och eftersom PHP 5.4 alltid är aktiverade. I tidigare versioner kunde ekotaggar bara aktiveras i samband med korta taggar.
<?= "Hello World" ?>
Korta taggar
Du kan inaktivera eller aktivera dessa taggar med alternativet short_open_tag
.
<?
echo "Hello World";
?>
Korta taggar:
- är inte tillåtna i alla större PHP- kodningsstandarder
- är avskräckta i den officiella dokumentationen
- är inaktiverade som standard i de flesta distributioner
- störa inline XMLs behandlingsinstruktioner
- accepteras inte i kodinlämningar av de flesta open source-projekt
ASP-taggar
Genom att aktivera asp_tags
alternativet kan ASP-stil-taggar användas.
<%
echo "Hello World";
%>
Det här är ett historiskt skämt och bör aldrig användas. De avlägsnades i PHP 7.0.