Cours complet de programmation en PHP, destiné aux développeurs étudiants, professionnels ou autodidactes.
--- Les fondamentaux du langage (1ère partie) ---
- Introduction
- Variables et constantes
- Opérateurs
- Conditions
- Boucles
Version HD et exemples de code source disponibles sur demande.
3. PHP : Hypertext Processor
3
• Langage de programmation côté serveur
• Langage open source
• Langage interprété avec style procédural ou objet
• Actuellement en version 7.4
4. Flux de fonctionnement général
4
1. Requête HTTP
Navigateur
Chrome
Firefox
Edge …
ServeurWeb
Apache
NGINX
IIS …
Site dynamique
3. Résultats
Serveur BDD
MySQL
MariaDB
PostgreSQL …
2. Requête SQL
4. Réponse
HTML, CSS, JS, …
5. Flux de fonctionnement général
5
1. Requête HTTP
Application
Android
IOS
Windows
ServeurWeb
Apache
NGINX
IIS …
Application mobile
3. Résultats
Serveur BDD
MySQL
MariaDB
PostgreSQL …
2. Requête SQL
4. Réponse
JSON
6. Exemple de code
6
• Le code PHP est délimité par les balises <?php et ?>
• Chaque instruction est terminée par un ;
• echo affiche une chaine de caractères
• La chaine de caractères est encadrée par des guillemets simples‘
11. Types de variables simples (scalaires)
Une variable peut stocker 4 types scalaires :
• Un nombre entier (int)
• Un nombre décimal (float)
• Une chaine de caractères (string)
• Un booléen (bool) : true ou false
11
12. Autres types de variables
Une variable peut aussi stocker :
• La valeur null (aucune valeur en mémoire)
• Un tableau (array)
• Un objet (object)
• Une fonction (closure)
• Un itérable (iterable)
• Une ressource (resource)
12
13. Règles de nommage
Un nom de variable :
• Doit commencer par une lettre ou _
• Doit contenir ensuite des lettres, des chiffres ou _
• Est sensible à la casse !
• Exemple d’écriture snake case : $nom_joueur, $score_max, $date1, $date2 …
• Incorrect : $1ere_date, $nom-joueur
• Ces 2 variables sont différentes : $nom, $Nom
13
16. Affichage du type et de la valeur
16
La fonction var_dump affiche le type et la valeur d’une variable (utile au debug) :
17. Définir des chaines de caractères
Guillemets simples
• Plus rapides à traiter
• Variables non interprétées
Guillemets doubles
• Plus lents à traiter
• Variables interprétés : concaténation possible
17
2 méthodes possibles avec leur spécificités :
18. Echappement de caractères
Avec guillemets simples Avec guillemets doubles
18
L’opérateur ignore le caractère qui le succède :
19. Définir des chaines longues
Syntaxe multi lignes
Syntaxe nowdoc
19
2 méthodes pour définir des chaines longues avec guillemets simples :
20. Définir des chaines longues
Syntaxe multi lignes
Syntaxe heredoc
20
2 méthodes pour définir des chaines longues avec guillemets doubles :
21. Définir des numériques
21
Un numérique définit un nombre entier ou décimal, positif ou non :
On peut utiliser e (puissance 10) pour définir des grands nombres :
24. Suppression d’une variable
24
• La fonction unset supprime une variable et son contenu en mémoire
• La variable devient non définie et l’utiliser renvoie une erreur de type notice
25. Les variables nulles
25
• Une variable affectée avec null n’a pas de valeur en mémoire
• A la différence d’une variable supprimée avec unset, elle est toujours définie
Déclarer une variable sans valeur la rend nulle ET indéfinie :
26. Les constantes
• Stockent des valeurs en mémoire de manière définitive
• Définies par la fonction define
• Possèdent une portée globale à tout le code
• Mêmes règles de nommage que les variables (convention : nom en majuscules)
26
27. Types de constantes
• Un nombre entier
• Un nombre décimal
• Une chaine de caractères
• Un booléen
• Un tableau
27
Une constante peut stocker :
28. Règles de nommage
Un nom de constante :
• Doit commencer par une lettre ou _
• Doit contenir ensuite des lettres, des chiffres ou _
• Est sensible à la casse
• Utiliser de préférence des majuscules: NB_MAX, NOM_FICHIER_AIDE …
28
30. Les constantes prédéfinies
• Fournies par le cœur de PHP
• true/TRUE, false/FALSE et null/NULL sont des constantes prédéfinies
30
Constante Signification
PHP_VERSION numéro de la version de PHP utilisée
PHP_OS système d’exploitation utilisé pour compiler PHP
PHP_BINDIR chemin d’accès aux binaires PHP
Liste complète : http://php.net/manual/fr/reserved.constants.php
31. Les constantes magiques
• Fournies par le cœur de PHP
• Donnent des informations sur le code en cours d’exécution
• Encadrées par __ __
31
Constante Signification
__DIR__ répertoire du fichier en cours d’exécution
__FILE__ nom du fichier en cours d’exécution
__LINE__ numéro de la ligne de code lue
Liste complète : http://php.net/manual/fr/language.constants.predefined.php
34. Opérateurs arithmétiques
34
Utilisés sur des nombres entiers ou décimaux :
Opérateur Nom Résultat
a + b Addition somme de a et b
a - b Soustraction différence de a et b
a * b Multiplication produit de a et b
a / b Division quotient de a et b
a % b Modulo reste de la division de a par b
a ** b Puissance a puissance b
-a Opposé opposé de a
37. Opérateurs logiques
37
Utilisés sur les booléens :
Opérateur Nom Résultat
a && b ET true si a = true ET b = true
a and b ET* true si a = true ET b = true
a || b OU true si a = true OU b = true
a or b OU* true si a = true OU b = true
a xor b XOR (OU exclusif) true si a = true OU b = true (mais pas les 2)
! a NON true si a = false. false si a = true
* Synonymes avec différence de priorité
39. Incrémentation / décrémentation
39
Opérateur Nom Résultat
a++ Post-incrémentation renvoie la valeur de a et l’incrémente de 1
++a Pré-incrémentation incrémente a de 1 et renvoie sa valeur
a-- Post-décrémentation renvoie la valeur de a et la décrémente de 1
--a Pré-décrémentation décrémente a de 1 et renvoie sa valeur
Opérateurs très utilisés dans les boucles :
41. Opérateurs combinés
41
Simplifient le code quand une variable est réutilisée dans une expression :
Opérateur Equivalent à
a += b a = a + b
a -= b a = a – b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b
a **= b a = a ** b
a .= b a = a.b
43. Opérateurs de comparaison
43
Comparent des variables de tout type et renvoient un booléen :
Opérateur Résultat
a == b true si a est égal à b
a < b true si a est strictement inférieur à b
a <= b true si a est inférieur ou égal à b
a > b true si a est strictement supérieur à b
a >= b true si a est supérieur ou égal à b
a != b true si a est différent de b
Ne pas confondre == (égalité) et = (affectation)
45. Comparaison de chaines
45
Utilise l’ordre alphabétique et sensible à la casse :
Si comparaison avec un numérique, conversion de type effectuée :
46. Utilisation des booléens
46
• false équivaut à une chaine vide, 0, 0.0, ‘0’ ou null
• Les autres valeurs sont donc true
47. Egalité stricte
47
Opérateurs qui comparent à la fois le type et la valeur des variables :
Opérateur Résultat
a === b true si a et b ont le même type et la même valeur
a !== b true si a et b ne sont pas du même type ou de la même valeur
48. Opérateurs binaires
48
• Manipulent les bits des variables
• Un bit a 2 valeurs possibles : 0 ou 1.
• 8 = 01000
Opérateur Nom Résultat
a & b ET binaire les bits à 1 dans a ET dans b sont à 1
a | b OU binaire les bits à 1 dans a OU dans b sont à 1
a ^ b XOR (OU exclusif) les bits à 1 dans a OU dans b (mais pas les 2) sont à 1
~ a NON binaire les bits à 1 dans a sont à 0, et inversement
a << b Décalage à gauche décale les bits de a de b rangs à gauche
a >> b Décalage à droite décale les bits de a de b rangs à droite
51. La structure if
51
• Réalise un test conditionnel
• En cas de succès du test, exécute les expressions situées dans son bloc { …. }
52. Ecriture simplifiée des blocs
52
Si un bloc ne contient qu’une expression, accolades facultatives :
Equivalent à :
Equivalent (mais déconseillé)
53. La structure if … else
53
• Réalise un test conditionnel
• En cas d’échec du test, exécute les expressions du bloc else
54. La structure if … elseif … else …
54
• Réalise un test conditionnel
• En cas d’échec du test, réalise un ou plusieurs nouveaux tests
• Si échec à tous les tests, exécute les instructions du bloc else éventuel
55. Utiliser les booléens
55
• Le résultat d’un test se stocke dans un booléen
• On peut donc les utiliser dans les structures conditionnelles
56. Tester l’existence de variables
56
La fonction isset renvoie true si la ou les variables données sont définies :
57. Tester l’existence de constantes
57
La fonction defined renvoie true si la constante est définie :
58. Tester si une variable est vide
58
La fonction empty renvoie true :
• Si la variable contient une valeur équivalente à false
• Ou si la variable n’est pas définie (sans provoquer d’alerte)
59. Tester le type d’une variable
59
Les fonctions is_... permettent de tester le type d’une variable :
60. La structure switch
60
• Idéale en cas d’évaluations multiples d’une même variable
• Un cas (case) se termine par un break. Utiliser default pour les cas non testés.
• Equivaut à plusieurs elseif
61. Tests multiples et switch
61
Répéter plusieurs case pour tester des valeurs multiples d’une variable :
Equivalent à :
62. L’opérateur ternaire ?
62
• L’opérateur ? stocke dans une variable le résultat d’un test conditionnel
• Si succès du test, la variable contient la partie à gauche du :
• Si échec du test, la variable contient la partie à droite du :
63. Imbrication de blocs
63
• Un bloc if peut contenir d’autres blocs if
• De manière générale, on peut imbriquer tout type de bloc
65. La boucle while
65
• Réalise un test conditionnel
• Exécute les instructions situées dans son bloc tant que le test est true
• Si le premier test est false, le bloc n’est jamais exécuté
66. La boucle do
66
• Réalise un test conditionnel
• Exécute les instructions situées dans son bloc jusqu’à que le test soit false
• Le bloc est exécuté au moins une fois
67. Attention aux boucles infinies !
67
Toute boucle doit se terminer pour ne pas planter le programme :
68. La boucle for
68
Utilise une variable d’itération pour répéter son bloc :
1. Initialisation de la variable d’itération
2. Test conditionnel qui doit être true pour que le bloc s’exécute
3. Itération de la variable à effectuer à chaque répétition