Vous êtes sur la page 1sur 70

Développer en

Fondamentaux du langage (1ère partie)


Introduction

2
PHP : Hypertext Processor

• Langage de programmation côté serveur


• Langage open source
• Langage interprété avec style procédural ou objet
• Actuellement en version 7.4

3
Flux de fonctionnement général
Site dynamique

Navigateur Serveur Web Serveur BDD


1. Requête HTTP 2. Requête SQL
Chrome Apache MySQL
Firefox NGINX MariaDB
Edge … IIS … PostgreSQL …
4. Réponse 3. Résultats
HTML, CSS, JS, …

4
Flux de fonctionnement général
Application mobile

Application Serveur Web Serveur BDD


1. Requête HTTP 2. Requête SQL
Android Apache MySQL
IOS NGINX MariaDB
Windows IIS … PostgreSQL …
4. Réponse 3. Résultats
JSON

5
Exemple de code

• 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‘
6
Commenter le code
2 façons d’écrire des commentaires :

Commentaire par ligne // Commentaire multi lignes /* … */

7
Stopper un programme

Les fonctions die (ou exit) terminent immédiatement l’exécution du script, avec un message facultatif :

8
Variables et constantes

9
Les variables

• Stockent des valeurs en mémoire $num 5

• Identifiées par $ $nom Frank

10
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
L’opérateur = affecte une valeur en mémoire à une variable :

14
Affichage de valeurs

echo affiche 1 si un booléen est true, et une chaine vide si false

15
Affichage du type et de la valeur
La fonction var_dump affiche le type et la valeur d’une variable (utile au debug) :

16
Définir des chaines de caractères
2 méthodes possibles avec leur spécificités :

Guillemets simples Guillemets doubles


• Plus rapides à traiter • Plus lents à traiter
• Variables non interprétées • Variables interprétés : concaténation possible

17
Echappement de caractères
L’opérateur \ ignore le caractère qui le succède :

Avec guillemets simples Avec guillemets doubles

18
Définir des chaines longues
2 méthodes pour définir des chaines longues avec guillemets simples :

Syntaxe multi lignes

Syntaxe nowdoc

19
Définir des chaines longues
2 méthodes pour définir des chaines longues avec guillemets doubles :

Syntaxe multi lignes

Syntaxe heredoc

20
Définir des numériques
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 :

21
Copie d’une variable
Par défaut, les variables sont copiées par valeur :

22
Référence d’une variable
Utiliser & pour copier une variable par référence, qui partagera la même adresse mémoire :

23
Suppression d’une variable
• 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

24
Les variables nulles
• 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 :

25
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

Une constante peut stocker :

• Un nombre entier
• Un nombre décimal
• Une chaine de caractères
• Un booléen
• Un tableau

27
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
La fonction define crée une constante et lui affecte une valeur définitivement :

29
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

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

30
Les constantes magiques
• Fournies par le cœur de PHP
• Donnent des informations sur le code en cours d’exécution
• Encadrées par __ __

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

31
Les opérateurs

32
Opérateur de concaténation
L’opérateur . concatène des chaines entre elles ou avec des variables :

Alternative : utilisation multi-arguments de echo :

33
Opérateurs arithmétiques
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

34
Opérateurs arithmétiques
Exemple d’utilisation :

35
Priorité des opérateurs
Sans parenthèses, la priorité mathématique l’emporte :

36
Opérateurs logiques
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é


37
Opérateurs logiques
Exemple d’utilisation:

and et or affectent la variable avant l’opération :

38
Incrémentation / décrémentation
Opérateurs très utilisés dans les boucles :

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

39
Incrémentation / décrémentation
Exemple d’utilisation:

40
Opérateurs combinés
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

41
Opérateurs combinés
Exemple d’utilisation:

Code de départ Code simplifié

42
Opérateurs de comparaison
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)


43
Opérateurs de comparaison
Exemple d’utilisation:

ET et NON prioritaires sur OU, bien utiliser les parenthèses :

44
Comparaison de chaines

Utilise l’ordre alphabétique et sensible à la casse :

Si comparaison avec un numérique, conversion de type effectuée :

45
Utilisation des booléens
• false équivaut à une chaine vide, 0, 0.0, ‘0’ ou null
• Les autres valeurs sont donc true

46
Egalité stricte
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

47
Opérateurs binaires
• 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
48
Opérateurs binaires
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

49
Les conditions

50
La structure if
• Réalise un test conditionnel
• En cas de succès du test, exécute les expressions situées dans son bloc { …. }

51
Ecriture simplifiée des blocs

Si un bloc ne contient qu’une expression, accolades facultatives :

Equivalent à :

Equivalent (mais déconseillé)

52
La structure if … else
• Réalise un test conditionnel
• En cas d’échec du test, exécute les expressions du bloc else

53
La structure if … elseif … else …
• 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

54
Utiliser les booléens
• Le résultat d’un test se stocke dans un booléen
• On peut donc les utiliser dans les structures conditionnelles

55
Tester l’existence de variables
La fonction isset renvoie true si la ou les variables données sont définies :

56
Tester l’existence de constantes
La fonction defined renvoie true si la constante est définie :

57
Tester si une variable est vide
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)

58
Tester le type d’une variable
Les fonctions is_... permettent de tester le type d’une variable :

59
La structure switch
• 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

60
Tests multiples et switch
Répéter plusieurs case pour tester des valeurs multiples d’une variable :

Equivalent à :

61
L’opérateur ternaire ?
• 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 :

62
Imbrication de blocs
• Un bloc if peut contenir d’autres blocs if
• De manière générale, on peut imbriquer tout type de bloc

63
Les boucles

64
La boucle while
• 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é

65
La boucle do
• 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

66
Attention aux boucles infinies !
Toute boucle doit se terminer pour ne pas planter le programme :

67
La boucle for
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

68
L’instruction break
Permet de « casser » le déroulement d’une boucle et d’en sortir immédiatement :

69
L’instruction continue

Permet de revenir directement à l’exécution du test conditionnel :

70

Vous aimerez peut-être aussi