PHPAan de slag met PHP


Opmerkingen

voer hier de afbeeldingsbeschrijving in

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

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 ( <?= ... ?> ).

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 een void retour, terwijl print een int retourneert met een waarde van 1
  • echo kan meerdere argumenten aannemen (alleen zonder haakjes), terwijl print slechts één argument gebruikt
  • echo is iets sneller dan print

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

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.

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

  1. Maak een index.php bestand met:
<?php
echo "Hello World from built-in PHP server";
 
  1. Voer de opdracht php -S localhost:8080 uit vanaf de opdrachtregel. Neem geen http:// . Hierdoor wordt een webserver gestart die luistert op poort 8080 met behulp van de huidige map waarin u zich bevindt als document root.

  2. 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 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:

  1. Standaard invoer. Voer de php opdracht zonder argumenten uit, maar pijp er PHP-code in:
    echo '<?php echo "Hello world!";' | php
  2. Bestandsnaam als argument. Voer de php opdracht uit met de naam van een PHP-bronbestand als het eerste argument:
    php hello_world.php
  3. Code als argument. Gebruik de optie -r in de opdracht php , 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!";'
  4. Interactieve shell. Gebruik de optie -a in de php 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-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";
?>
 
PHP 5.x 5.4

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

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.