
Les bases du PHP
Balises PHP
Un bloc de code PHP est toujours entourĂ© des balises <?php ... ?> ou juste <? ... ?>. Sâil nây a pas dâautres instructions aprĂšs le bloc, alors la balise de fin nâest pas obligatoire.
Pour faire de lâaffichage dans le navigateur, il est possible dâutiliser la fonction echo ou les balises <?= ... ?>.
Les instructions php doivent ĂȘtre sĂ©parĂ©es par un point-virgule ; Ă la fin.
Les commentaires sont écrits avec // ou # sur une ligne, avec /* ...*/ sur plusieurs lignes.
Les variables sont indiquées avec un dollar $.
BP : ne pas laisser de magic numbers, mieux vaut définir une constante avec un nom qui a une signification concrÚte.
Les strings sont concaténées avec un point : echo 'Hello '.$prenom;.
instance=>methode().
Variables
Elles commencent toujours par un dollar $ et ne sont pas typées (inférence de type).
Il nây a pas de typage fort : une variable peut changer de type au cours de son existence.
Le transtypage implicite est possible si le premier caractÚre correspond au type souhaité (une multiplication sur une string qui commence par un chiffre, par exemple). Le transtypage explicite est possible avec settype().
Leur portĂ©e est Ă lâĂ©chelle du fichier : si une variable est assignĂ©e dans un bloc PHP, elle est accessible dans un autre bloc PHP plus loin.
Lâassignation par valeur est faite avec le = (classique).
Il est possible dâassigner par rĂ©fĂ©rence avec & tel que la valeur de var2 est au mĂȘme endroit mĂ©moire que var1, donc toute modification sâapplique aux deux variables : $var2 = &$var1;.
(+) Il est possible dâutiliser des variables dynamiques (rarement vu dans la vraie vie), avec le $$.
Les constantes nâont pas besoin de $ et sont nommĂ©es en majuscules avec le mot-clĂ© const ou la fonction define() : define('SON_NOM', 'sa valeur dĂ©finitive');.
Il est possible de tester lâexistence dâune constante avec defined().
Fonctions utiles
var_dump()= affiche les informations de la variable (son type, sa valeurâŠ)
isset()= teste lâexistence dâune variable
empty()= teste si une variable est vide
unset()= supprime une variable
Types
Type boolean :
- deux valeurs : true et false
- insensible Ă la casse
- opérateurs de comparaison : classiques, avec le strictement identique ou différent (=== ou !==)
- opérateurs booléens : et (AND, &&), ou (OR, ||), ou exclusif (XOR), non (!)
- équivalent à false: 0, '', '0', [], null
Types int et float :
- nombres entiers et Ă virgule
- opérateurs arithmétiques classiques
Type string :
- simples quotes '' : pas dâinterprĂ©tation
- double quotes "" : interprĂ©tation des variables, des caractĂšres de mise en forme (\n, \r, \tâŠ)
- back slash \ : caractĂšre dâĂ©chappement (\\, \", \$...)
- point . : opérateur de concaténation
Tableaux
TrÚs souple, ils sont beaucoup utilisés en PHP.
La syntaxe des tableaux est classique : [] ou array().
Un tableau peut ĂȘtre indicĂ© (numĂ©rique) consĂ©cutif ou non, associatif (clĂ©/valeur), ou mĂȘme mixte.
On peut mettre des tableaux dans un tableau pour créer des tableaux multidimensionnels.
Lâassignation successive de valeurs Ă un tableau remplit les cases dans lâordre.
Il est possible dâindiquer lâindice pour modifier lâordre.
Il est possible de préciser une clé qui sera associée à la valeur assignée.
// tableau indice
$tabI[] = 'bleu';
$tabI[] = 'rouge';
$tabI[] = 'vert';
var_dump($tabI); //array(3) { [0]=> string(4) "bleu" [1]=> string(5) "rouge" [2]=> string(4) "vert" }
// - equivaut a
$arrI = array('bleu', 'rouge', 'vert');
echo '<br><br>';
// tableau associatif
$tabA['ville'] = 'Bordeaux';
$tabA['département'] = 'Gironde';
$tabA['région'] = 'Nouvelle-Aquitaine';
var_dump($tabA);
// - equivaut a
$arrA = array('ville' => 'Bordeaux', 'département' => 'Gironde', 'région' => 'Nouvelle-Aquitaine');
echo '<br><br>';
// tableau multidimensionnel
$tabVilles = ['France' => ['Paris','Bordeaux','Marseille'], 'Espagne' => ['Madrid','Bilbao']];
var_dump($tabVilles);
// - equivaut a
$arrVilles = array('France' => array('Paris','Bordeaux','Marseille'), 'Espagne' => array('Madrid','Bilbao'));
LâaccĂšs aux Ă©lĂ©ments du tableau se fait avec leur indice ou leur clĂ© entre crochets : tabMultidim['clĂ© dim1'][indice dim2].
Fonctions utiles :
- explode() = crĂ©e un tableau Ă partir dâune string, on prĂ©cise le sĂ©parateur (utile notamment pour le JSON)
- implode() = lâinverse, on prĂ©cise Ă©galement le sĂ©parateur
Structures de contrĂŽle
Conditions
Les conditionnelles sont classiques : if, else, elseif dâune part, switch, case, break, default dâautre part.
if ($a === $b) {
echo 'a est strictement égal à b';
}
switch ($repas) {
case 1 :
echo 'petit déjeuner';
break;
case 2 :
echo 'déjeuner';
break;
case 3 :
echo 'goûter';
break;
case 4 :
echo 'dĂźner';
break;
default :
echo 'c\'est pas l\'heure de manger';
break;
}Il existe une forme alternative avec if (condition) : ...instructions... endif; et switch ($var) : ...instructions... endswitch;. On peut alors mettre du html au milieu du PHP (pas recommandé).
Opérateur ternaire
Il est utilisĂ© lorsquâon peut rĂ©pondre oui ou non Ă la question : condition ? valeur si vraie : valeur si faux.
echo 'Il y a '.$nb.' personne'.($nb>1 ? 's' : '').' dans la piĂšce.';
// si $nb=1 : Il y a 1 personne dans la piĂšce.
// si $nb=6 : Il y a 6 personnes dans la piĂšce.
Boucles
Les boucles sont également classiques :
while (condition) { instructions },
do { instructions } while (condition);,
for (initialisation, condition, incrémentation) { instructions },
foreach ($tableau as $element) { instructions },
foreach ($tableau as $cle => $valeur) { instructions }
Quelques fonctions utiles
Inclure un fichier PHP
On peut inclure un fichier avec include, souvent placĂ© au dĂ©but du fichier pour une meilleure lisibilitĂ©. Si le fichier nâest pas trouvĂ©, un warning sera renvoyĂ© mais le traitement ne sera pas arrĂȘtĂ©.
Cela ne ralentit rien car il faut attendre que tout le fichier soit chargĂ© avant quâil y ait affichage.
On peut aussi inclure un fichier avec require, qui retournera une erreur fatale et arrĂȘtera le traitement si le fichier nâest pas trouvĂ©.
Pour Ă©viter dâappeler plusieurs fois un mĂȘme fichier dans une cascade dâinclusion, il est recommandĂ© dâutiliser include_once et require_once.
BP : La sĂ©paration du code en diffĂ©rents fichiers (notamment selon le langage) permet Ă plusieurs collĂšgues de travailler en parallĂšle (comme designer et dĂ©velopper) mais aussi une plus grande maintenabilitĂ©, la rĂ©utilisation de parties de codeâŠ
Changer la casse
strtoupper() en majuscules,
strtolower() en minuscules,
ucwords() pour la premiĂšre lettre de chaque mot en majuscule
Formater les nombres
sprintf() pour formater une chaßne de caractÚres (avec par exemple %02d pour un nombre sur deux caractÚres, qui ajoute un zéro devant si le nombre est sur un seul caractÚres)
number_format() pour transformer un nombre en une chaßne de caractÚres formatée, avec des paramÚtres pour le nombre de décimales, le séparateur des décimales, le séparateur des milliers.
Rechercher dans une chaĂźne de caractĂšres
strpos() pour chercher un caractĂšre, soit elle le retourne soit elle retourne faux
strrpos() pour chercher la derniĂšre occurrence dâun caractĂšre
stripos() pour chercher un caractĂšre sans tenir compte de la casse
strripos() pour chercher la derniĂšre occurrence dâun caractĂšre, sans tenir compte de la casse
Manipuler les dates
On utilise le timestamp Unix (nombre de secondes écoulées depuis le 1er janvier 1970) pour comparer les dates.
mktime() pour calculer le nombre de secondes entre le timestamp et la date indiquée
date() pour formater la date : date('d/m/Y') pour un format jj/mm/aaaa.
ini_set() pour changer la configuration sur quelques lignes (fuseau horaire, par exemple)
Créer et appeler une fonction
Les fonctions nâont pas besoin dâavoir Ă©tĂ© dĂ©finies avant leur utilisation
Une fonction est créée avec function unNom(params) { instructions [return] } puis appelée avec son nom et la valeur de ses éventuels paramÚtres.
Il est possible de passer des valeurs par défaut à des paramÚtres lors de la création ($param1 = "une valeur par défault").
Il est possible de crĂ©er des fonctions anonymes, des fonctions typĂ©es (en prĂ©cisant le type de la variable retournĂ©e), dâutiliser des variables globales avec $GLOBALS.
Les expressions rationnelles
pas vues en cours, Ă complĂ©terâŠ
BP en vrac
- Faire attention à la lisibilité, surtout si la fonction est dans un autre fichier.
- Se balader dans les fichiers avec ./jesuisdanslememedossier.php et ../jesuisdansledossieraudessus.php (et pas avec des chemins absolus).
- A partir de PHP8, il est possible de donner le type des paramĂštres et du return : câest plus facile Ă lire et ça fait une vĂ©rification de plus.
- Lors de lâĂ©criture dâune fonction, se demander dâabord âquâest-ce quâelle retourne et de quoi elle a besoin ?â.
- Documenter ses scripts !! avec /**
- Faire un fichier Ă part avec les fonctions et utiliser le require_once.