PHP
➡️ PHP Manual
PHP, qui signifie à l'origine "Personal Home Page" (et actuellement "PHP: Hypertext Preprocessor"), est un langage de script open source principalement utilisé pour le développement web. Créé par Rasmus Lerdorf en 1994, PHP a évolué pour devenir l'un des langages de programmation les plus populaires pour la création de sites web dynamiques et interactifs. PHP était initialement un ensemble de scripts CGI écrits en langage C, destinés à gérer le site web personnel de son créateur et à suivre les visites sur son CV en ligne.
Note
Un site web dynamique et interactif est un type de site qui affiche des contenus et des interfaces différents en fonction des interactions de l'utilisateur, des données saisies, ou d'autres facteurs. Contrairement aux sites statiques, qui affichent le même contenu à chaque visite, les sites dynamiques peuvent adapter leur contenu et leur comportement en temps réel.
Exemples
- Réseaux sociaux comme Facebook ou Twitter, où le contenu est constamment mis à jour et personnalisé.
- Sites e-commerce qui affichent des produits en fonction des préférences des utilisateurs.
- Forums en ligne où les utilisateurs peuvent poster des messages, interagir, et recevoir des réponses en temps réel.
Buts et Philosophie
- Faciliter le développement web : PHP a été conçu pour simplifier la création de pages web dynamiques.
- Script côté serveur : Il s'exécute sur un serveur web, générant du HTML qui est ensuite envoyé au client.
- Facilité d'intégration : Peut être intégré facilement avec du HTML.
Utilité et Fonctionnalités
- Développement de sites web dynamiques : Utilisé pour créer des sites capables d'interagir avec des bases de données, gérer des sessions, et exécuter des opérations complexes.
- Large communauté et support : Grâce à sa popularité, PHP bénéficie d'une communauté active et de frameworks comme Laravel et Symfony.
- Flexible et polyvalent : Fonctionne sur divers systèmes d'exploitation et s'intègre avec plusieurs bases de données.
Exemples d'utilisation
- Sites e-commerce : Magento (open-source e-commerce platform) repose sur PHP. Des marques connues telles que Nespresso, Cisco, Nike l'utilisent.
- CMS (systèmes de gestion de contenu) : WordPress, écrit principalement en PHP, alimente des sites comme Sony Music et le blog PlayStation.
- Applications web personnalisées : Des applications comme Facebook, Wikipedia et MailChimp utilisent PHP pour divers besoins.
PHP est un langage de programmation à la fois interprété et impératif.
Langage interprété : Le code est exécuté directement, instruction par instruction, par un interpréteur.
Avantages
- Modification dynamique : Le code peut être modifié même après le déploiement sans interrompre le fonctionnement.
- Portabilité : Fonctionne sur différents systèmes d'exploitation.
- Pas de compilation nécessaire : Permet un développement et un déploiement rapides.
Inconvénients
- Performance inférieure au code compilé : Le code interprété est généralement plus lent.
- Détection d'erreurs à l'exécution : Les erreurs sont identifiées uniquement lors de l'exécution.
- Risques de sécurité accrus : Le code mal écrit peut être vulnérable aux injections et autres attaques.
Langage impératif : PHP suit le paradigme impératif, où les programmes sont écrits sous forme de séquences d'instructions modifiant l'état du programme.
La syntaxe de PHP est influencée par plusieurs langages de programmation, notamment C, Perl, Java et Python.
Influence de C
- Structure de base : Les structures de contrôle (
for
,while
,if
) sont similaires à celles de C. - Syntaxe des fonctions : Leur définition et utilisation ressemblent à celles de C.
Influence de Perl
- Manipulation des chaînes : PHP hérite de Perl sa puissance pour gérer les chaînes de caractères et expressions régulières.
- Variables : Les sigils (
$
pour les variables) viennent de Perl.
Autres influences
- PHP s'est inspiré de Java et Python pour certaines fonctionnalités orientées objet, bien que ces influences soient moins marquées.
Popularité
- PHP est rapidement devenu l'un des langages côté serveur les plus utilisés pour le développement web, et il reste encore très répandu aujourd'hui.
Fonctionnement
La communication entre nginx et PHP-FPM (FastCGI Process Manager pour PHP) pour traiter une requête web implique plusieurs étapes clés :
-
Réception de la requête par nginx
- Un navigateur web, ou un autre client, envoie une requête HTTP au serveur nginx.
- nginx, écoutant sur le port approprié (généralement le port 80 pour HTTP ou 443 pour HTTPS), reçoit cette requête.
- nginx analyse la requête pour déterminer son traitement.
- Pour des ressources statiques (images, CSS, JavaScript, etc.), nginx sert directement ces fichiers.
- Si la requête demande l'exécution d'un script PHP, nginx la redirige vers PHP-FPM.
-
Communication avec PHP-FPM
- nginx utilise le protocole FastCGI pour communiquer avec PHP-FPM. Cette communication se fait via un socket Unix ou un port TCP, selon la configuration.
- PHP-FPM reçoit la requête, initialise un processus, et exécute le script PHP demandé. Ce script peut inclure des actions comme :
- L'accès à une base de données.
- Le traitement de formulaires ou d'autres données.
- La génération de contenu dynamique.
-
Retour de la réponse à nginx
- Une fois exécuté, le script PHP génère une réponse, généralement au format HTML (ou parfois JSON, XML, etc.).
- La réponse générée est renvoyée à nginx via la passerelle FastCGI.
-
Envoi de la réponse au client
- nginx reçoit la réponse de PHP-FPM et l'envoie au client d'origine, comme un navigateur web.
- Le navigateur interprète la réponse (souvent du HTML) pour afficher la page web.
Ce processus permet une séparation claire des rôles entre nginx (serveur web léger et performant) et PHP-FPM (moteur d'exécution de scripts PHP), optimisant ainsi la gestion des ressources et les performances des sites dynamiques.
Exemple
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<?php
$text = 'Hello world!';
echo $text;
?>
</body>
</html>
Syntaxe
Fichier
- Les fichiers PHP sont des fichiers texte encodés en UTF-8.
- L'extension standard pour les fichiers contenant du code PHP est
.php
.
Balises PHP
- Le code PHP est encadré par des balises ouvrantes
<?php
et fermantes?>
. Ces balises indiquent où commence et se termine le code PHP dans un fichier. - Dans les fichiers PHP contenant exclusivement du code PHP, il est recommandé de ne pas inclure la balise de fermeture
?>
à la fin du fichier. Cela réduit le risque d'ajouter des espaces ou des lignes vides accidentelles après la fermeture, qui pourraient causer des erreurs ou des problèmes d'en-têtes HTTP. - Tout contenu placé en dehors des balises PHP est traité comme du texte brut (généralement du HTML) et n'est pas interprété par PHP. Ce contenu est directement inclus dans la réponse HTTP. Cette caractéristique permet l'intégration fluide de code PHP au sein d'autres types de contenus, comme le HTML, dans des fichiers PHP mixtes.
- La balise
<?=
est une forme raccourcie de la balise d'écho<?php echo
. Elle est utilisée pour afficher rapidement le résultat d'une expression PHP. Cette syntaxe est pratique pour insérer des valeurs PHP dans du HTML, par exemple :
<h1><?= $title; ?></h1>
<h1><?php echo $title; ?></h1>
Commentaires
- PHP supporte les commentaires de type C / C++
<?php
// Ligne simple de commentaire
/*
* Bloc de commentaire,
* sur plusieurs lignes
*/
Instructions
- En PHP, il est généralement nécessaire de terminer les instructions par un point-virgule
;
. Le point-virgule marque la fin d'une instruction, permettant au parser PHP de déterminer où une instruction se termine et où la suivante commence.
Variables
- Toutes les variables en PHP commencent par le symbole dollar
$
, suivi du nom de la variable. - L'opérateur
=
est utilisé pour affecter des valeurs aux variables. - Les noms de variables peuvent inclure des lettres, des chiffres et des underscores (
_
), mais ne peuvent pas commencer par un chiffre. - Les noms de variables sont sensibles à la casse :
$Variable
et$variable
sont considérées comme deux variables distinctes.
<?php
$name = 'Joe';
$Name = 'Bob';
echo "$name, $Name"; // output: Joe, Bob
$4site = 'not yet'; // invalid: starts with a number
$_4site = 'not yet'; // valid: starts with an underscore
PHP est un langage à typage dynamique. Le type d'une variable est déterminé automatiquement en fonction de la valeur qui lui est affectée.
PHP supporte plusieurs types de données, notamment :
- Booléens (boolean) : Peuvent avoir les valeurs
true
oufalse
. - Entiers (integer) : Représentent des nombres entiers, positifs ou négatifs.
- Nombres à virgule flottante (float) : Utilisés pour les nombres décimaux.
- Tableaux (array) : Permettent de stocker des collections de données.
- Chaînes de caractères (string) : Contiennent des séquences de caractères.
- Objets (object) : Représentent des instances de classes.
- Ressources (resource) : Références spéciales pour accéder à des ressources externes (ex. : connexions à des bases de données).
null
: Représente l'absence de valeur.
<?php
$a = 3;
$b = 5;
echo $a + $b; // outputs: 8
$a = 'seven';
echo $a + $b; // error
- Les variables déclarées en dehors de toutes les fonctions ont une portée globale et ne peuvent pas être accédées directement à l'intérieur des fonctions.
- Les variables déclarées à l'intérieur d'une fonction ont une portée locale à cette fonction.
<?php
$a = 1; // global variable
function test()
{
$a = 2; // local variable
echo $a;
}
test(); // output: 2
echo $a; // output: 1
- PHP offre plusieurs variables superglobales disponibles dans tous les contextes du script (code, fonction, etc.) :
$_GET
: Contient des informations sur les variables passées au script via l'URL (méthode GET).$_POST
: Contient des informations sur les variables passées au script via le corps de la requête HTTP (méthode POST).$_SESSION
: Contient les variables de session, qui sont persistantes sur plusieurs requêtes d'un même utilisateur.$_COOKIE
: Contient les données des cookies envoyés par le navigateur au serveur.$_SERVER
: Contient des informations sur l'environnement du serveur et la requête HTTP, telles que les en-têtes, les chemins des scripts et les emplacements des scripts.- Etc.
Chaînes de caractères
En PHP, les guillemets simples ('
) et les guillemets doubles ("
) sont utilisés pour délimiter des chaînes de caractères, mais ils fonctionnent de manière légèrement différente.
Guillemets simples '
- Tout ce qui est encadré par des guillemets simples est traité de manière littérale. Les variables et les séquences d'échappement spéciales (comme
\n
pour un saut de ligne) ne sont pas interprétées. - L'utilisation de guillemets simples est légèrement plus rapide, car PHP n'a pas besoin de chercher et d'interpréter les variables ou les séquences d'échappement à l'intérieur de la chaîne.
<?php
$text = 'World';
echo 'Hello $text'; // output: Hello $text
Guillemets doubles "
- Les variables à l'intérieur de chaînes délimitées par des guillemets doubles sont interprétées, c'est-à-dire que leur valeur est incorporée dans la chaîne.
- Les séquences d'échappement, comme
\n
(saut de ligne) ou\t
(tabulation), sont reconnues et traitées.
<?php
$text = 'World';
echo "Hello $text"; // output: Hello World
Concaténation
- Le point (
.
) est utilisé pour concaténer des chaînes de caractères en PHP.
<?php
$text = 'The answer is ';
$number = 42;
echo $text . $number; // output: The answer is 42
Tip
Généralement, il est préférable d'utiliser les doubles guillemets ("
) pour la concaténation de chaînes, plutôt que l'opérateur point (.
), afin d'améliorer la lisibilité du code.
Échappement
- Pour échapper les guillemets simples (
'
) ou doubles ("
) dans une chaîne en PHP, utilisez le caractère d'échappement backslash (\
).
<?php
echo 'Escape \' single quote'; // output: Escape ' single quote
<?php
echo "Escape \" double quote"; // output: Escape " double quote
Curly syntax
- Pour insérer des variables complexes ou pour clarifier quelle partie d'une chaîne doit être traitée comme une variable dans les chaînes de caractères délimitées par des guillemets doubles, utilisez les accolades
{}
.
<?php
$text = 'file';
echo "A folder can contain many {$text}s"; // A folder can contain many files
Booléen
Le type boolean en PHP est un type de données qui peut avoir deux valeurs : true
(vrai) ou false
(faux).
PHP est un langage à typage dynamique, ce qui signifie que les variables n'ont pas besoin d'être déclarées comme étant de type booléen pour être traitées comme telles. PHP convertit automatiquement les valeurs dans un contexte booléen selon certaines règles.
Règles de conversion en booléen
Valeurs considérées comme false
:
- Le nombre
0
(zéro) en entier ou0.0
en flottant. - La chaîne de caractères vide (
''
) et la chaîne'0'
. - Le tableau vide (
array()
ou[]
). - La valeur spéciale
null
. - D'autres valeurs spécifiques, non abordées dans ce cours.
Toutes les autres valeurs sont considérées comme true
.
Entier
Le type entier (integer) en PHP est utilisé pour représenter des nombres sans parties décimales.
Les entiers peuvent être représentés dans différentes notations :
- Décimale (base 10) : Par défaut, les nombres sont interprétés comme décimaux, par exemple,
123
. - Hexadécimale (base 16) : Précédée de
0x
, par exemple,0x1A
. - Octale (base 8) : Précédée de
0o
, par exemple,0o23
. - Binaire (base 2) : Précédée de
0b
, par exemple,0b101001
.
Tableau
- Tableau indexé : Les index sont automatiquement assignés en commençant par
0
.
<?php
$array = ['apple', 'orange', 'banana'];
- Tableau associatif : Chaque valeur est associée à une clé spécifique.
<?php
$array = ['a' => 'apple', 'o' => 'orange', 'c' => 'banana'];
- Création : Il est possible de créer un tableau en utilisant :
- La fonction
array()
:array('valeur1', 'valeur2')
. - La syntaxe courte
[]
:['valeur1', 'valeur2']
.
- La fonction
<?php
$array = [1, 2, 3];
- Accès : L'accès à une valeur spécifique se fait via son index (pour les tableaux indexés) ou sa clé (pour les tableaux associatifs).
<?php
$value = $array[0];
$value = $array['a'];
Attention, on peut presque faire n'importe quoi !
<?php
$array = [
1 => 'one',
'2' => 2,
0 => false,
'value',
-7 => '-7',
'key' => 'value',
null => null,
];
var_dump($array);
- Itération : Utilisez des boucles, comme
foreach
,for
, ouwhile
, pour parcourir les éléments du tableau.
<?php
$array = [2, 40];
$sum = 0;
foreach ($array as $value) {
$sum += $value;
}
echo $sum; // output: 42
- Tableaux multidimensionnels : Ce sont des tableaux contenant d'autres tableaux comme valeurs. Ils sont utiles pour représenter des structures de données complexes.
<?php
$library = [
[
'titre' => 'Le Grand Gatsby',
'auteur' => 'F. Scott Fitzgerald',
'ISBN' => '1234567890',
],
[
'titre' => '1984',
'auteur' => 'George Orwell',
'ISBN' => '0987654321',
],
[
'titre' => 'Le Seigneur des Anneaux',
'auteur' => 'J.R.R. Tolkien',
'ISBN' => '1122334455',
],
];
echo '<pre>';
foreach ($library as $count => $book) {
echo 'Livre ' . ($count + 1) . "\n";
foreach ($book as $key => $value) {
echo "- $key : $value\n";
}
echo "\n";
}
echo '</pre>';
null
- En PHP,
null
est une valeur spéciale qui représente une variable sans valeur. - Une variable est considérée comme ayant la valeur
null
si :- Aucune valeur n'a été assignée.
- Elle a été explicitement définie à
null
.
<?php
$var;
$var = null;
- La fonction
is_null()
permet de vérifier si une variable estnull
.
<?php
$var = null;
echo is_null($var); // output: 1
- Une variable non définie est également considérée comme
null
. Cependant :- Accéder à une variable non définie génère un avertissement en PHP.
- Il est recommandé de déclarer toutes les variables ou de vérifier leur existence avec
isset()
pour éviter ces avertissements.
<?php
echo is_null($var); // output: warning
Structures de contrôle conditionnelles
if
: Exécute un bloc de code si une condition spécifiée est vraie.else
: Utilisé avecif
pour exécuter un bloc de code si la conditionif
est fausse.elseif
: Permet de spécifier une nouvelle condition à tester si la première conditionif
est fausse.switch
: Permet de comparer une variable à différentes valeurs. Chaque valeur est appelée un "cas" (case
), et le code correspondant est exécuté si la variable correspond à ce cas.
Boucles
while
: Répète un bloc de code tant qu'une condition spécifiée est vraie.do-while
: Semblable àwhile
, mais garantit que le bloc de code est exécuté au moins une fois, puis répète la boucle tant que la condition est vraie.for
: Répète un bloc de code un nombre défini de fois. La syntaxe defor
comprend des expressions d'initialisation, de condition et d'incrément.foreach
: Spécialement conçu pour itérer sur les éléments d'un tableau. Pour chaque itération, la valeur de l'élément courant est assignée à une variable.
Autres structures de contrôle
break
: Utilisé pour sortir prématurément d'une boucle.continue
: Saute le reste du code dans l'itération courante de la boucle et passe à l'itération suivante.
Syntaxe alternative
- En PHP, la syntaxe alternative pour les structures de contrôle et les boucles utilise des deux-points (
:
) à la place des accolades ({}
) pour délimiter les blocs de code. - Cette syntaxe est souvent utilisée dans les scripts PHP mélangés avec du HTML, car elle peut rendre le code plus lisible.
<body>
<?php
$condition = true;
if ($condition):
?>
<p>La condition est vraie.</p>
<?php else: ?>
<p>La condition est fausse.</p>
<?php endif; ?>
</body>
<body>
<?php $fruits = ['apple', 'orange', 'banana']; ?>
<ul>
<?php foreach ($fruits as $fruit): ?>
<li><?= $fruit; ?></li>
<?php endforeach; ?>
</ul>
</body>
Fonction
- Pour créer une fonction en PHP, on utilise le mot-clé
function
, suivi du nom de la fonction, d'une paire de parenthèses, et d'un bloc de code entre accolades.
<?php
function function_name()
{
// Code
}
- Les fonctions peuvent prendre des arguments, qui sont des variables passées à la fonction pour être utilisées dans son exécution.
<?php
function say_hello($name)
{
echo "Hello $name";
}
- Une fonction peut retourner une valeur à l'aide du mot-clé
return
. Une fois quereturn
est exécuté, la fonction est terminée et retourne la valeur spécifiée.
<?php
function add($a, $b)
{
return $a + $b;
}
- Pour exécuter une fonction, il suffit d'appeler son nom suivi de parenthèses, en passant les arguments si nécessaire.
<?php
say_hello("Alice"); // output: Hello Alice
echo '<br>'; // output: <br>
echo add(5, 7); // output: 12
- Il est possible de définir des valeurs par défaut pour les arguments d'une fonction. Si aucun argument n'est passé lors de l'appel de la fonction, la valeur par défaut est utilisée.
<?php
function say_hello($name = 'anonymous')
{
echo "Hello $name";
}
- PHP supporte les fonctions anonymes (aussi appelées closures), qui sont des fonctions sans nom. Elles sont particulièrement utiles pour les callbacks (fonction qui est passée comme argument à une autre fonction).
<?php
$callback = function ($arg) {
echo $arg;
};
Inclusion de fichiers en PHP
L'inclusion de fichiers en PHP est une pratique courante pour organiser et réutiliser le code.
include
et require
include '/path/to/file.php';
: Si le fichier spécifié n'est pas trouvé,include
génère un avertissement (warning), mais le script continue à s'exécuter.require '/path/to/file.php';
: Si le fichier spécifié n'est pas trouvé,require
génère une erreur fatale et arrête l'exécution du script.
include_once
et require_once
- Ces fonctions fonctionnent de la même manière que
include
etrequire
, mais elles vérifient si le fichier a déjà été inclus. - Si c'est le cas, elles ne l'incluront pas une deuxième fois.
- Cela est utile pour éviter des problèmes tels que la redéfinition de fonctions, classes ou autres.