SlideShare une entreprise Scribd logo
1  sur  70
Développer en
Fondamentaux du langage (1ère partie)
Introduction
2
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
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, …
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
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‘
Commenter le code
Commentaire par ligne // Commentaire multi lignes /* … */
7
2 façons d’écrire des commentaires :
Stopper un programme
8
Les fonctions die (ou exit) terminent immédiatement l’exécution du script, avec un message facultatif :
Variables et constantes
9
Les variables
• Stockent des valeurs en mémoire
• Identifiées par $
10
5$num
$nom Frank
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
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
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
Affectation de valeurs
14
L’opérateur = affecte une valeur en mémoire à une variable :
Affichage de valeurs
15
echo affiche 1 si un booléen est true, et une chaine vide si false
Affichage du type et de la valeur
16
La fonction var_dump affiche le type et la valeur d’une variable (utile au debug) :
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 :
Echappement de caractères
Avec guillemets simples Avec guillemets doubles
18
L’opérateur  ignore le caractère qui le succède :
Définir des chaines longues
Syntaxe multi lignes
Syntaxe nowdoc
19
2 méthodes pour définir des chaines longues avec guillemets simples :
Définir des chaines longues
Syntaxe multi lignes
Syntaxe heredoc
20
2 méthodes pour définir des chaines longues avec guillemets doubles :
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 :
Copie d’une variable
22
Par défaut, les variables sont copiées par valeur :
Référence d’une variable
23
Utiliser & pour copier une variable par référence, qui partagera la même adresse mémoire :
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
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 :
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
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 :
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
Déclaration d’une constante
29
La fonction define crée une constante et lui affecte une valeur définitivement :
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
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
Les opérateurs
32
Opérateur de concaténation
33
L’opérateur . concatène des chaines entre elles ou avec des variables :
Alternative : utilisation multi-arguments de echo :
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
Opérateurs arithmétiques
35
Exemple d’utilisation :
Priorité des opérateurs
36
Sans parenthèses, la priorité mathématique l’emporte :
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é
Opérateurs logiques
38
Exemple d’utilisation:
and et or affectent la variable avant l’opération :
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 :
Incrémentation / décrémentation
40
Exemple d’utilisation:
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
Opérateurs combinés
Code de départ Code simplifié
Exemple d’utilisation:
42
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)
Opérateurs de comparaison
44
Exemple d’utilisation:
ET et NON prioritaires sur OU, bien utiliser les parenthèses :
Comparaison de chaines
45
Utilise l’ordre alphabétique et sensible à la casse :
Si comparaison avec un numérique, conversion de type effectuée :
Utilisation des booléens
46
• false équivaut à une chaine vide, 0, 0.0, ‘0’ ou null
• Les autres valeurs sont donc true
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
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
Opérateurs binaires
49
Exemple d’utilisation:
CLIM 010 2
GPS 100 4
CLIM | GPS 110 6
Choix & GPS 100 4
Les valeurs numériques doivent être des multiples de 2
Les conditions
50
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 { …. }
Ecriture simplifiée des blocs
52
Si un bloc ne contient qu’une expression, accolades facultatives :
Equivalent à :
Equivalent (mais déconseillé)
La structure if … else
53
• Réalise un test conditionnel
• En cas d’échec du test, exécute les expressions du bloc else
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
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
Tester l’existence de variables
56
La fonction isset renvoie true si la ou les variables données sont définies :
Tester l’existence de constantes
57
La fonction defined renvoie true si la constante est définie :
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)
Tester le type d’une variable
59
Les fonctions is_... permettent de tester le type d’une variable :
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
Tests multiples et switch
61
Répéter plusieurs case pour tester des valeurs multiples d’une variable :
Equivalent à :
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 :
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
Les boucles
64
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é
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
Attention aux boucles infinies !
67
Toute boucle doit se terminer pour ne pas planter le programme :
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
L’instruction break
69
Permet de « casser » le déroulement d’une boucle et d’en sortir immédiatement :
L’instruction continue
70
Permet de revenir directement à l’exécution du test conditionnel :

Contenu connexe

Tendances

Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitivesInforMatica34
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Structure de Contrôle
Structure de Contrôle Structure de Contrôle
Structure de Contrôle InforMatica34
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2Beligh HAMDI
 
Les Structures de données
Les Structures de donnéesLes Structures de données
Les Structures de donnéesHichem Kemali
 
Introduction a la compilation Analyse Syntaxique - C3
Introduction a la compilation  Analyse Syntaxique - C3Introduction a la compilation  Analyse Syntaxique - C3
Introduction a la compilation Analyse Syntaxique - C3Beligh HAMDI
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeInforMatica34
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Eléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIEléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIJihenHedhli1
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 

Tendances (20)

Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitives
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
Structure de Contrôle
Structure de Contrôle Structure de Contrôle
Structure de Contrôle
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2
 
Tp introduction java
Tp introduction javaTp introduction java
Tp introduction java
 
Les Structures de données
Les Structures de donnéesLes Structures de données
Les Structures de données
 
Introduction a la compilation Analyse Syntaxique - C3
Introduction a la compilation  Analyse Syntaxique - C3Introduction a la compilation  Analyse Syntaxique - C3
Introduction a la compilation Analyse Syntaxique - C3
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’Algorithme
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Cours tp2
Cours tp2Cours tp2
Cours tp2
 
Formation python
Formation pythonFormation python
Formation python
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Eléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIEléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLI
 
langage C++
langage C++langage C++
langage C++
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 

Similaire à PHP : les fondamentaux (1ère partie)

Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
PHP : les fondamentaux (2ème partie)
PHP : les fondamentaux (2ème partie)PHP : les fondamentaux (2ème partie)
PHP : les fondamentaux (2ème partie)CodeFormation
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxbetalab
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdfAabidiHafid
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfadeljaouadi
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmiquenicodeff
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdfAhmed12314
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithmemustapha4
 
algorithme chapitre 1 et 2 (1).pptx
algorithme chapitre 1 et 2 (1).pptxalgorithme chapitre 1 et 2 (1).pptx
algorithme chapitre 1 et 2 (1).pptxHathat10
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSSAyoubElmrabet6
 
POO_Java_BasesLangage.pdf
POO_Java_BasesLangage.pdfPOO_Java_BasesLangage.pdf
POO_Java_BasesLangage.pdfLarbaSAWADOGO2
 
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.pptAmineReal
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 

Similaire à PHP : les fondamentaux (1ère partie) (20)

Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
PHP : les fondamentaux (2ème partie)
PHP : les fondamentaux (2ème partie)PHP : les fondamentaux (2ème partie)
PHP : les fondamentaux (2ème partie)
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptx
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdf
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdf
 
Coursalgorithmique
CoursalgorithmiqueCoursalgorithmique
Coursalgorithmique
 
Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 
Python avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codagePython avancé : Qualité de code et convention de codage
Python avancé : Qualité de code et convention de codage
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithme
 
algorithme chapitre 1 et 2 (1).pptx
algorithme chapitre 1 et 2 (1).pptxalgorithme chapitre 1 et 2 (1).pptx
algorithme chapitre 1 et 2 (1).pptx
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
POO_Java_BasesLangage.pdf
POO_Java_BasesLangage.pdfPOO_Java_BasesLangage.pdf
POO_Java_BasesLangage.pdf
 
seance4-1 php.ppt
seance4-1 php.pptseance4-1 php.ppt
seance4-1 php.ppt
 
Utilisation solveur excel
Utilisation solveur excelUtilisation solveur excel
Utilisation solveur excel
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 

PHP : les fondamentaux (1ère partie)

  • 1. Développer en Fondamentaux du langage (1ère partie)
  • 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‘
  • 7. Commenter le code Commentaire par ligne // Commentaire multi lignes /* … */ 7 2 façons d’écrire des commentaires :
  • 8. Stopper un programme 8 Les fonctions die (ou exit) terminent immédiatement l’exécution du script, avec un message facultatif :
  • 10. Les variables • Stockent des valeurs en mémoire • Identifiées par $ 10 5$num $nom Frank
  • 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
  • 14. Affectation de valeurs 14 L’opérateur = affecte une valeur en mémoire à une variable :
  • 15. Affichage de valeurs 15 echo affiche 1 si un booléen est true, et une chaine vide si false
  • 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 :
  • 22. Copie d’une variable 22 Par défaut, les variables sont copiées par valeur :
  • 23. Référence d’une variable 23 Utiliser & pour copier une variable par référence, qui partagera la même adresse mémoire :
  • 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
  • 29. Déclaration d’une constante 29 La fonction define crée une constante et lui affecte une valeur définitivement :
  • 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
  • 33. Opérateur de concaténation 33 L’opérateur . concatène des chaines entre elles ou avec des variables : Alternative : utilisation multi-arguments de echo :
  • 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
  • 36. Priorité des opérateurs 36 Sans parenthèses, la priorité mathématique l’emporte :
  • 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é
  • 38. Opérateurs logiques 38 Exemple d’utilisation: and et or affectent la variable avant l’opération :
  • 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
  • 42. Opérateurs combinés Code de départ Code simplifié Exemple d’utilisation: 42
  • 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)
  • 44. Opérateurs de comparaison 44 Exemple d’utilisation: ET et NON prioritaires sur OU, bien utiliser les parenthèses :
  • 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
  • 49. Opérateurs binaires 49 Exemple d’utilisation: CLIM 010 2 GPS 100 4 CLIM | GPS 110 6 Choix & GPS 100 4 Les valeurs numériques doivent être des multiples de 2
  • 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
  • 69. L’instruction break 69 Permet de « casser » le déroulement d’une boucle et d’en sortir immédiatement :
  • 70. L’instruction continue 70 Permet de revenir directement à l’exécution du test conditionnel :