Sök…


Anmärkningar

ange bildbeskrivning här

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>
PHP 5.x 5.4

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 en void retur, medan print returnerar ett int med ett värde på 1
  • echo kan ta flera argument (utan parenteser), medan print bara tar ett argument
  • echo är något snabbare än print

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:

  1. Standardinmatning. Kör php kommandot utan några argument, men rör PHP-kod till det:
    echo '<?php echo "Hello world!";' | php
  2. Filnamn som argument. Kör php kommandot med namnet på en PHP-källfil som det första argumentet:
    php hello_world.php
  3. Kod som argument. Använd alternativet -r i php 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!";'
  4. Interaktivt skal. Använd alternativet -a i php 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

  1. Skapa en index.php fil som innehåller:
<?php
echo "Hello World from built-in PHP server";
  1. Kör kommandot php -S localhost:8080 från kommandoraden. Inkludera inte http:// . Detta startar en webbserver som lyssnar på port 8080 med den aktuella katalogen som du är i som dokumentroten.

  2. Ö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";
?>
PHP 5.x 5.4

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
PHP 5 x 5,6

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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow