PHP Tutoriel
Démarrer avec PHP
Recherche…
Remarques
PHP (acronyme récursif pour PHP: Hypertext Preprocessor) est un langage de programmation open source largement utilisé. Il est particulièrement adapté au développement Web. La particularité de PHP réside dans le fait qu’elle sert à la fois les développeurs débutants et expérimentés. Il présente une faible barrière à l'entrée, il est donc facile de démarrer et, en même temps, il offre des fonctionnalités avancées offertes dans d'autres langages de programmation.
Open source
C'est un projet open-source. N'hésitez pas à vous impliquer .
Spécification de langue
PHP a une spécification de langage .
Versions prises en charge
Actuellement, il existe trois versions prises en charge : 5.6, 7.0 et 7.1.
Chaque version de PHP est entièrement prise en charge pendant deux ans à partir de sa version stable initiale. Après cette période de support actif de deux ans, chaque agence est prise en charge pendant une année supplémentaire uniquement pour les problèmes de sécurité critiques. Les versions pendant cette période sont faites selon les besoins: il peut y avoir plusieurs versions, ou aucune, en fonction du nombre de rapports.
Versions non prises en charge
Une fois que les trois années de support sont terminées, la branche arrive en fin de vie et n'est plus supportée.
Un tableau des succursales de fin de vie est disponible.
Suivi des problèmes
Les bogues et autres problèmes sont suivis sur https://bugs.php.net/ .
Listes de diffusion
Les discussions sur le développement et l'utilisation de PHP se déroulent sur les listes de diffusion de PHP .
Documentation officielle
Aidez-nous à maintenir ou à traduire la documentation officielle de PHP .
Vous pouvez utiliser l'éditeur à edit.php.net . Consultez notre guide pour les contributeurs .
Versions
PHP 7.x
Version | Supporté jusqu'à | Date de sortie |
---|---|---|
7.1 | 2019-12-01 | 2016-12-01 |
7.0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
Version | Supporté jusqu'à | Date de sortie |
---|---|---|
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 | Supporté jusqu'à | Date de sortie |
---|---|---|
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 | Le 2001-06-23 | 2000-05-22 |
Versions héritées
Version | Supporté jusqu'à | Date de sortie |
---|---|---|
3.0 | 2000-10-20 | 1998-06-06 |
2.0 | 1997-11-01 | |
1.0 | 1995-06-08 |
Sortie HTML du serveur Web
PHP peut être utilisé pour ajouter du contenu aux fichiers HTML. Alors que HTML est traité directement par un navigateur Web, les scripts PHP sont exécutés par un serveur Web et le code HTML qui en résulte est envoyé au navigateur.
Le code HTML suivant contient une instruction PHP qui ajoutera Hello World!
à la sortie:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Lorsque ceci est enregistré en tant que script PHP et exécuté par un serveur Web, le code HTML suivant sera envoyé au navigateur de l'utilisateur:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
également une syntaxe de raccourci, qui vous permet d'imprimer immédiatement une valeur. Avant PHP 5.4.0, cette courte syntaxe ne fonctionnait qu'avec le paramètre de configuration short_open_tag activé.
Par exemple, considérez le code suivant:
<p><?= "Hello world!" ?></p>
Sa sortie est identique à la sortie de ce qui suit:
<p><?php echo "Hello world!"; ?></p>
Dans les applications du monde réel, toutes les données générées par PHP sur une page HTML doivent être correctement protégées pour empêcher les attaques XSS ( scripts intersites ) ou la corruption de texte.
Voir aussi: Strings and PSR-1 , qui décrit les meilleures pratiques, y compris l'utilisation correcte des balises courtes ( <?= ... ?>
).
Sortie non HTML du serveur Web
Dans certains cas, lorsque vous travaillez avec un serveur Web, il peut être nécessaire de remplacer le type de contenu par défaut du serveur Web. Il peut arriver que vous deviez envoyer des données en plain text
, JSON
ou XML
, par exemple.
La fonction header()
peut envoyer un en-tête HTTP brut. Vous pouvez ajouter l'en Content-Type
tête Content-Type
pour informer le navigateur du contenu que nous envoyons.
Considérez le code suivant, où nous définissons Content-Type
comme text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Cela produira un document en texte brut avec le contenu suivant:
Bonjour le monde
Pour produire du contenu JSON , utilisez plutôt le type de contenu application/json
:
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);
Cela produira un document de type application/json
avec le contenu suivant:
{"response": "Hello World"}
Notez que la fonction header()
doit être appelée avant que PHP ne produise une sortie ou que le serveur Web ait déjà envoyé des en-têtes pour la réponse. Alors, considérez le code suivant:
// 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";
Cela produira un avertissement:
Attention: Impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés par (sortie démarrée à /dir/example.php:2) dans /dir/example.php sur la ligne 3
Lorsque vous utilisez header()
, sa sortie doit être le premier octet envoyé par le serveur. Pour cette raison, il est important de ne pas avoir de lignes ou d’espaces vides au début du fichier avant la balise d’ouverture PHP <?php
. Pour la même raison, il est recommandé de supprimer la balise de fermeture PHP ?>
(Voir PSR-2 ) des fichiers contenant uniquement PHP et des blocs de code PHP situés à la toute fin d'un fichier.
Affichez la section de mise en mémoire tampon de sortie pour savoir comment «intercepter» votre contenu dans une variable à afficher ultérieurement, par exemple, après la sortie des en-têtes.
Bonjour le monde!
echo
est la construction de langage la plus utilisée pour imprimer des résultats en PHP:
echo "Hello, World!\n";
Vous pouvez également utiliser l’ print
:
print "Hello, World!\n";
Les deux instructions remplissent la même fonction, avec des différences mineures:
-
echo
a un retourvoid
, alors queprint
retourne unint
avec une valeur de1
-
echo
peut prendre plusieurs arguments (sans les parenthèses seulement), alors queprint
ne prend qu'un seul argument -
echo
est légèrement plus rapide que l'print
L' echo
et l' print
sont tous deux des constructions de langage, pas des fonctions. Cela signifie qu'ils ne nécessitent pas de parenthèses autour de leurs arguments. Pour une cohérence esthétique avec les fonctions, les parenthèses peuvent être incluses. De nombreux exemples d'utilisation de l' echo
et de l' print
sont disponibles ailleurs .
C-style printf
et les fonctions associées sont également disponibles, comme dans l'exemple suivant:
printf("%s\n", "Hello, World!");
Voir Sortie de la valeur d'une variable pour une introduction complète aux variables de sortie en PHP.
Séparation de l'instruction
Tout comme la plupart des langages de style C, chaque instruction se termine par un point-virgule. De plus, une balise de fermeture est utilisée pour terminer la dernière ligne de code du bloc PHP.
Si la dernière ligne du code PHP se termine par un point-virgule, la balise de fermeture est facultative si aucun code ne suit cette dernière ligne de code. Par exemple, nous pouvons omettre la balise de fermeture après echo "No error";
dans l'exemple suivant:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Cependant, si un autre code suit votre bloc de code PHP, la balise de fermeture n’est plus facultative:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Nous pouvons également omettre le point-virgule de la dernière instruction d'un bloc de code PHP si ce bloc de code a une balise de fermeture:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Il est généralement recommandé d'utiliser toujours un point-virgule et d'utiliser une balise de fermeture pour chaque bloc de code PHP, à l'exception du dernier bloc de code PHP, si aucun autre code ne suit ce bloc de code PHP.
Donc, votre code devrait ressembler à ceci:
<?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 peut également être exécuté à partir de la ligne de commande directement à l'aide de l'interface de ligne de commande (CLI).
La CLI est fondamentalement la même que PHP à partir des serveurs Web, à l'exception de quelques différences en termes d'entrée et de sortie standard.
Déclencher
La CLI de PHP permet quatre manières d’exécuter du code PHP:
- Entrée standard Exécutez la commande
php
sans aucun argument, mais insérez-y du code PHP:echo '<?php echo "Hello world!";' | php
- Nom de fichier comme argument. Exécutez la commande
php
avec le nom d'un fichier source PHP comme premier argument:php hello_world.php
- Code comme argument. Utilisez l'option
-r
dans la commandephp
, suivie du code à exécuter. Les balises ouvertes<?php
ne sont pas nécessaires, car tout dans l'argument est considéré comme du code PHP:php -r 'echo "Hello world!";'
- Shell interactif Utilisez l'option
-a
dans la commandephp
pour lancer un shell interactif. Ensuite, tapez (ou collez) le code PHP et appuyez sur return :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Sortie
Toutes les fonctions ou commandes produisant une sortie HTML dans le serveur Web PHP peuvent être utilisées pour produire une sortie dans le flux stdout (descripteur de fichier 1). descripteur 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
Ligne de commande shell $ 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
Contribution
Voir: Interface de ligne de commande (CLI)
Serveur PHP intégré
PHP 5.4+ est livré avec un serveur de développement intégré. Il peut être utilisé pour exécuter des applications sans avoir à installer un serveur HTTP de production tel que nginx ou Apache. Le serveur intégré est uniquement conçu pour être utilisé à des fins de développement et de test.
Il peut être démarré en utilisant le drapeau -S
:
php -S <host/ip>:<port>
Exemple d'utilisation
- Créez un fichier
index.php
contenant:
<?php
echo "Hello World from built-in PHP server";
Exécutez la commande
php -S localhost:8080
partir de la ligne de commande. N'incluez pashttp://
. Cela démarrera un serveur Web écoutant sur le port 8080 en utilisant le répertoire actuel que vous êtes en tant que racine du document.Ouvrez le navigateur et accédez à
http://localhost:8080
. Vous devriez voir votre page "Hello World".
Configuration
Pour remplacer la racine du document par défaut (c'est-à-dire le répertoire en cours), utilisez l'indicateur -t
:
php -S <host/ip>:<port> -t <directory>
Par exemple, si vous avez un répertoire public/
dans votre projet, vous pouvez servir votre projet depuis ce répertoire en utilisant php -S localhost:8080 -t public/
.
Journaux
Chaque fois qu'une demande est faite à partir du serveur de développement, une entrée de journal comme celle ci-dessous est écrite dans la ligne de commande.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
Balises PHP
Il existe trois types de balises pour désigner les blocs PHP dans un fichier. L'analyseur PHP recherche les balises d'ouverture et de fermeture (le cas échéant) pour délimiter le code à interpréter.
Balises standard
Ces balises sont la méthode standard pour incorporer du code PHP dans un fichier.
<?php
echo "Hello World";
?>
Balises d'écho
Ces balises sont disponibles dans toutes les versions de PHP et depuis PHP 5.4 sont toujours activées. Dans les versions précédentes, les balises d'écho ne pouvaient être activées qu'avec des balises courtes.
<?= "Hello World" ?>
Balises courtes
Vous pouvez désactiver ou activer ces balises avec l'option short_open_tag
.
<?
echo "Hello World";
?>
Balises courtes:
- sont interdits dans toutes les principales normes de codage PHP
- sont découragés dans la documentation officielle
- sont désactivés par défaut dans la plupart des distributions
- interférer avec les instructions de traitement XML en ligne
- ne sont pas acceptés dans les soumissions de code par la plupart des projets open source
Balises ASP
En activant l'option asp_tags
, vous pouvez utiliser des balises de style ASP.
<%
echo "Hello World";
%>
Celles-ci sont un caprice historique et ne devraient jamais être utilisées. Ils ont été supprimés dans PHP 7.0.