SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Développer en
Fondamentaux du langage (2ème partie)
Les tableaux
2
Les tableaux
• Stockent 0 à n valeurs en mémoire dans une seule variable
• Les valeurs peuvent être indexées :
• De manière numérique
• De manière alphanumérique (tableaux associatifs)
3
Initialisation d’un tableau
4
• Un tableau est identifié par des crochets [ ]
• L’indice minimal est 0
0 1 2 3 4 5 6 7
Mercure Vénus Terre Mars Jupiter Saturne Uranus Neptune
Taille d’un tableau
5
Les fonctions count (ou sizeof) renvoient le nombre d’éléments d’un tableau :
Ajout dynamique des éléments
6
Les éléments peuvent être ajoutés dynamiquement :
Types de variables
7
Un tableau peut contenir des variables de tout type, y compris des tableaux :
La fonction print_r affiche le contenu du tableau sans le type des variables :
La fonction array
8
Un tableau peut aussi être initialisé par la fonction array (approche moins moderne) :
Appelée sans paramètre, elle initialise un tableau vide :
Attribution à un indice
9
• L’indice de l’élément peut être défini
• Les « trous » sont autorisés
Taille du tableau = nombre d’éléments et non indice maximal
Initialisation avec choix de l’indice
10
Ecriture raccourcie :
Tableau associatif
11
• Utilise des clés sous forme de chaines pour indexer les éléments
• La clé est unique et sensible à la casse
fr es ru us ca
France Espagne Russie Etats Unis Canada
Initialisation d’un tableau associatif
12
Ecriture raccourcie :
Tableau mixte
13
Un tableau peut contenir des indices numériques et des clés associatives :
Parcours d’un tableau
14
Avec une boucle for :
Ne fonctionne pas avec les tableaux associatifs
La boucle foreach
15
Spécialement adaptée aux parcours de tableaux, associatifs ou non :
Récupération de l’indice / la clé
16
foreach peut aussi récupérer l’indice ou la clé d’un élément :
Tester l’existence d’un élément
17
La fonction in_array renvoie true si l’élément recherché se trouve dans le tableau :
Tester l’existence d’une clé
18
La fonction array_key_exists renvoie true si la clé recherchée existe dans le tableau associatif :
Fonctionne aussi avec isset :
Opérateurs de tableaux
19
Opérateur Résultat
a + b union de a et de b
a == b true si a et b contiennent les mêmes clés/valeurs
a === b true si a et b contiennent les mêmes clés/valeurs
(dans le même ordre et de mêmes types)
a != b true si a et b ne contiennent pas les mêmes clés/valeurs
a !== b true si a et b ne contiennent pas les mêmes clés/valeurs
(ou ordre différent ou types différents)
Effectuent des unions ou des comparaisons de tableaux :
Opérateurs de tableaux
20
Exemple d’union (qui ignore les doublons) :
Concaténer un tableau dans une chaine
21
• { } permet d’évaluer la valeur d’une variable dans une chaine à guillemets doubles
• Syntaxe obligatoire pour les tableaux associatifs ou les objets
Les fonctions
22
Les fonctions
• Bloc de code nommé et appelable
• Peuvent recevoir des paramètres
• Peuvent renvoyer une valeur
• Peuvent se stocker dans des variables (closures)
• Peuvent s’utiliser anonymement
23
Règles de nommage
Un nom de fonction :
• Doit commencer par une lettre ou _
• Doit contenir ensuite des lettres, des chiffres ou _
• N’est pas sensible à la casse
• Exemple de convention avec verbes d’action : creer, supprimer, afficher …
24
Déclaration et appel
25
• L’instruction function permet de déclarer une fonction, puis son bloc
• L’appel de la fonction peut se faire avant ou après sa déclaration
• Ne pas oublier les parenthèses ( )
Attention aux doublons de noms !
26
Un nom de fonction doit être unique et n’est pas sensible à la casse :
Passage de paramètres
27
On peut passer une ou plusieurs variables en paramètres à une fonction :
Paramètres facultatifs
28
Un paramètre avec une valeur par défaut à sa déclaration devient facultatif :
2 appels équivalents :
Les paramètres facultatifs doivent se situer en fin de déclaration
Passage de paramètres par valeur
29
• Par défaut, les paramètres sont passés par valeur
• A la sortie de la fonction, leur valeur n’est pas modifiée
Passage de paramètres par référence
30
• Utiliser & pour passer des paramètres par référence
• Leur valeur peut être modifiée par la fonction
Retour d’une fonction
31
• L’instruction return permet à la fonction de renvoyer une valeur
• Le retour termine immédiatement l’exécution de la fonction
Retour de valeur nulle
32
Utiliser return sans valeur renvoie une valeur nulle :
Typage fort
33
• On peut préciser le type des paramètres et/ou le type retourné par la fonction
• Provoque une erreur si le type fourni ou retourné est différent
Typage fort et valeur nulle
34
L’opérateur ? indique que le type fourni ou retourné peut être null :
Fonctions sans retour
35
• Utiliser void pour indiquer que la fonction ne doit rien retourner
• Provoque une erreur fatale si la fonction retourne une valeur
Fonction récursive
Version itérative Version récursive
36
Ne pas oublier une condition d’arrêt pour éviter le stack overflow
Fonction qui s’appelle elle-même durant son exécution :
Portée des variables
37
• Une variable définie dans un fichier est accessible dans tout le fichier
• Une variable définie dans une fonction n’est pas accessible à l’extérieur de la fonction
• Une variable définie à l’extérieur d’une fonction n’est pas accessible dans la fonction
Variables globales
38
• Utiliser global pour rappeler dans une fonction une variable définie à l’extérieur
• La variable doit être définie avant l’appel de la fonction
Portée des constantes
39
Les constantes sont accessibles dans tout endroit du code :
Variables statiques
40
• Utiliser static pour définir des variables statiques de fonction
• Leur valeur est conservée à chaque appel
Nombre variable de paramètres
41
...$ indique qu’une fonction peut recevoir un nombre variable de paramètres stockés dans un tableau :
...$ permet aussi d’utiliser un tableau pour fournir plusieurs variables en une seule fois :
Fonctions anonymes (closures)
42
• Fonctions créées sans leur donner de nom
• Peuvent être utilisées comme valeur d’une variable, qui devient un objet de type Closure
use permet d’utiliser la valeur d’une variable déjà déclarée en dehors de la fonction
Fonctions standards
PHP fournit des dizaines de fonctions pour manipuler les scalaires, dates ou tableaux :
43
Thème Référence officielle
Fonctions de gestion des variables http://php.net/manual/fr/ref.var.php
Fonctions sur les chaines http://php.net/manual/fr/ref.strings.php
Fonctions mathématiques http://php.net/manual/fr/ref.math.php
Fonctions sur les dates http://php.net/manual/fr/ref.datetime.php
Fonctions sur les tableaux http://php.net/manual/fr/ref.array.php
Import de code
44
Import de code
• Le code peut être enregistré dans des fichiers distincts pour être importé
• Le code importé est immédiatement interprété
• Les variables et fonctions définies avant un import peuvent être utilisées
45
Instructions d’import
46
4 instructions pour importer le code d’un fichier :
Instruction Spécificité
include provoque un avertissement si fichier non trouvé
le fichier peut être importé plusieurs fois
include_once provoque un avertissement si fichier non trouvé
le fichier n’est importé qu’une fois
require provoque une erreur si fichier non trouvé
le fichier peut être importé plusieurs fois
require_once provoque une erreur si fichier non trouvé
le fichier n’est importé qu’une fois
Chemin d’accès du fichier à importer
47
Si aucun répertoire précisé, utilisation du paramètre include_path de php.ini :
= au répertoire courant (.) par défaut :
Chemin relatif ou absolu
48
2 méthodes possibles :
• Chemin relatif :
• Chemin absolu : Déconseillé
Si plusieurs répertoires sont utilisés :
• Utiliser les chemins relatifs avec la constante magique __DIR__ comme point de départ
• Evite les problèmes d’accès dus au changement de contexte d’exécution du script
Portée des fonctions
49
Une fonction définie avant un import peut être appelée :
Portée des variables
50
Une variable définie avant un import peut être utilisée :
Import unique ou multiple
51
Import unique Import multiple
Utiliser l’import unique pour les librairies de fonctions
Paramétrage de PHP
52
Paramétrage de PHP
• Les paramètres par défaut du langage sont chargés dans le fichier php.ini
• Leur modification est effective au démarrage du serveurWeb
• Certains paramètres sont modifiables le temps de l’exécution du script
53
Afficher les paramètres
• La fonction phpinfo affiche un résumé des paramètres de PHP au format HTML
Ne pas l’utiliser dans un environnement de production
54
Gérer les extensions
• Les extensions PHP fournissent des fonctions additionnelles à celles du cœur du langage
• Exemples d’extensions : ftp, openssl (sécurité), pdo (bases de données), gd2 (graphique) …
• Enregistrées dans des fichiers .dll dans le répertoire
55
Exemple d’extensions activées :
Paramétrer l’affichage des erreurs
• L’affichage des erreurs est déterminé par le paramètre display_errors
• A activer sur les serveurs de développement
56
• Sur les serveurs de production, le désactiver par sécurité
• Enregistrer les erreurs dans le journal d’erreurs du serveur avec log_errors
Paramétrer l’affichage des erreurs
• Le paramètre error_reporting détermine les types d’erreur à afficher et/ou enregistrer
• Contient une liste de constantes numériques combinées avec les opérateurs sur les bits
• Valeur recommandée en développement :
• Valeur recommandée en production :
57
Liste complète des constantes : http://php.net/manual/fr/errorfunc.constants.php
Paramètre modifiable le temps de l’exécution du script avec la fonction error_reporting :
Paramétrer le fuseau horaire
• Le fuseau horaire du serveur Web se configure avec date.timezone
• Utilisé par les fonctions qui manipulent les dates
58
Récupérer la valeur d’un paramètre
La fonction ini_get permet de récupérer la valeur d’un paramètre :
59
Modifier la valeur d’un paramètre
• La fonction ini_set modifie la valeur d’un paramètre
• Une fois le script exécuté, la valeur du paramètre est celle contenue dans php.ini
Certains paramètres ne sont pas modifiables avec ini_set
60Liste des paramètres (modifiables ou non) : http://php.net/manual/fr/ini.list.php
Exemple : définir à 5 minutes (300 secondes) le temps d’exécution max d’un script :
Les dates (méthode procédurale)
61
Les dates (méthode procédurale)
• PHP ne possède pas de type spécifique pour stocker des dates
• Différentes fonctions sont fournies pour les manipuler
62
Afficher la date/heure courante
63
La fonction date appelée avec un paramètre renvoie la date/heure courante dans une chaine :
Formatage de la date
64
Nombreux formats d’affichage disponibles :
Liste complète : http://php.net/manual/fr/function.date.php
Les timestamps
65
• Toute date à manipuler doit être convertie en timestamp UNIX
• Représente l’écart en secondes depuis le 01/01/1970 à minuit (GMT)
• La fonction time renvoie le timestamp courant
Initialisation d’un timestamp
66
2 méthodes pour créer un timestamp :
• Utiliser la fonction mktime(heure, minute, seconde, mois, jour, année)
• Utiliser la fonction strtotime qui convertit une chaine au format yyyy-mm-dd hh:mm:ss
• On peut fournir seulement la date ou l’heure
Une fois créé, le timestamp est donné à la fonction date :
Calculs temporels
67
strtotime peut effectuer des calculs temporels en utilisant des formats relatifs (chaines) :
Liste des formats relatifs : http://php.net/manual/fr/datetime.formats.relative.php
Utiliser la configuration locale
68
• La fonction strftime utilise la configuration locale du serveur pour formater les dates
• Utile pour afficher les jours/mois en français ou toute autre langue
• La fonction setlocale permet de configurer ces paramètres :
Les formats sont différents de ceux de la fonction date
Liste complète : http://php.net/manual/fr/function.strftime.php

Weitere ähnliche Inhalte

Was ist angesagt?

Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
pierrepo
 
Utilisation d'un système de tag des objets elf
Utilisation d'un système de tag des objets elfUtilisation d'un système de tag des objets elf
Utilisation d'un système de tag des objets elf
Thierry Gayet
 

Was ist angesagt? (20)

C2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partieC2 - Langage C - ISIMA 1 - Deuxieme partie
C2 - Langage C - ISIMA 1 - Deuxieme partie
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
C3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partieC3 - Langage C - ISIMA 1 - Troisieme partie
C3 - Langage C - ISIMA 1 - Troisieme partie
 
Découverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMADécouverte d'UNIX - ISIMA
Découverte d'UNIX - ISIMA
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
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
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
Ch11
Ch11Ch11
Ch11
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Cours javascript v1
Cours javascript v1Cours javascript v1
Cours javascript v1
 
Programming language python 2021
Programming language python 2021Programming language python 2021
Programming language python 2021
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Utilisation d'un système de tag des objets elf
Utilisation d'un système de tag des objets elfUtilisation d'un système de tag des objets elf
Utilisation d'un système de tag des objets elf
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Per lameliorer
Per lameliorerPer lameliorer
Per lameliorer
 

Ähnlich wie PHP : les fondamentaux (2ème partie)

Chapitre 4 Fonctions et procédures.pdf
Chapitre 4 Fonctions et procédures.pdfChapitre 4 Fonctions et procédures.pdf
Chapitre 4 Fonctions et procédures.pdf
C00LiMoUn
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptx
Hathat10
 

Ähnlich wie PHP : les fondamentaux (2ème partie) (20)

PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)PHP : les fondamentaux (1ère partie)
PHP : les fondamentaux (1ère partie)
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 
Cours_Java.pdf
Cours_Java.pdfCours_Java.pdf
Cours_Java.pdf
 
Theme 7
Theme 7Theme 7
Theme 7
 
Php1
Php1Php1
Php1
 
Chapitre 4 Fonctions et procédures.pdf
Chapitre 4 Fonctions et procédures.pdfChapitre 4 Fonctions et procédures.pdf
Chapitre 4 Fonctions et procédures.pdf
 
05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...05 visual basic .net - variables, procedures, arguments et structures de cont...
05 visual basic .net - variables, procedures, arguments et structures de cont...
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptx
 
Formation cakephp
Formation cakephpFormation cakephp
Formation cakephp
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
ALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptxALGORITHMIQUE fonction et procedure.pptx
ALGORITHMIQUE fonction et procedure.pptx
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Initiation au php
Initiation au phpInitiation au php
Initiation au php
 
Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types Hints
 
06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...06 visual basic .net - les structures de donnees, les enumerations de constan...
06 visual basic .net - les structures de donnees, les enumerations de constan...
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 

PHP : les fondamentaux (2ème partie)

  • 1. Développer en Fondamentaux du langage (2ème partie)
  • 3. Les tableaux • Stockent 0 à n valeurs en mémoire dans une seule variable • Les valeurs peuvent être indexées : • De manière numérique • De manière alphanumérique (tableaux associatifs) 3
  • 4. Initialisation d’un tableau 4 • Un tableau est identifié par des crochets [ ] • L’indice minimal est 0 0 1 2 3 4 5 6 7 Mercure Vénus Terre Mars Jupiter Saturne Uranus Neptune
  • 5. Taille d’un tableau 5 Les fonctions count (ou sizeof) renvoient le nombre d’éléments d’un tableau :
  • 6. Ajout dynamique des éléments 6 Les éléments peuvent être ajoutés dynamiquement :
  • 7. Types de variables 7 Un tableau peut contenir des variables de tout type, y compris des tableaux : La fonction print_r affiche le contenu du tableau sans le type des variables :
  • 8. La fonction array 8 Un tableau peut aussi être initialisé par la fonction array (approche moins moderne) : Appelée sans paramètre, elle initialise un tableau vide :
  • 9. Attribution à un indice 9 • L’indice de l’élément peut être défini • Les « trous » sont autorisés Taille du tableau = nombre d’éléments et non indice maximal
  • 10. Initialisation avec choix de l’indice 10 Ecriture raccourcie :
  • 11. Tableau associatif 11 • Utilise des clés sous forme de chaines pour indexer les éléments • La clé est unique et sensible à la casse fr es ru us ca France Espagne Russie Etats Unis Canada
  • 12. Initialisation d’un tableau associatif 12 Ecriture raccourcie :
  • 13. Tableau mixte 13 Un tableau peut contenir des indices numériques et des clés associatives :
  • 14. Parcours d’un tableau 14 Avec une boucle for : Ne fonctionne pas avec les tableaux associatifs
  • 15. La boucle foreach 15 Spécialement adaptée aux parcours de tableaux, associatifs ou non :
  • 16. Récupération de l’indice / la clé 16 foreach peut aussi récupérer l’indice ou la clé d’un élément :
  • 17. Tester l’existence d’un élément 17 La fonction in_array renvoie true si l’élément recherché se trouve dans le tableau :
  • 18. Tester l’existence d’une clé 18 La fonction array_key_exists renvoie true si la clé recherchée existe dans le tableau associatif : Fonctionne aussi avec isset :
  • 19. Opérateurs de tableaux 19 Opérateur Résultat a + b union de a et de b a == b true si a et b contiennent les mêmes clés/valeurs a === b true si a et b contiennent les mêmes clés/valeurs (dans le même ordre et de mêmes types) a != b true si a et b ne contiennent pas les mêmes clés/valeurs a !== b true si a et b ne contiennent pas les mêmes clés/valeurs (ou ordre différent ou types différents) Effectuent des unions ou des comparaisons de tableaux :
  • 20. Opérateurs de tableaux 20 Exemple d’union (qui ignore les doublons) :
  • 21. Concaténer un tableau dans une chaine 21 • { } permet d’évaluer la valeur d’une variable dans une chaine à guillemets doubles • Syntaxe obligatoire pour les tableaux associatifs ou les objets
  • 23. Les fonctions • Bloc de code nommé et appelable • Peuvent recevoir des paramètres • Peuvent renvoyer une valeur • Peuvent se stocker dans des variables (closures) • Peuvent s’utiliser anonymement 23
  • 24. Règles de nommage Un nom de fonction : • Doit commencer par une lettre ou _ • Doit contenir ensuite des lettres, des chiffres ou _ • N’est pas sensible à la casse • Exemple de convention avec verbes d’action : creer, supprimer, afficher … 24
  • 25. Déclaration et appel 25 • L’instruction function permet de déclarer une fonction, puis son bloc • L’appel de la fonction peut se faire avant ou après sa déclaration • Ne pas oublier les parenthèses ( )
  • 26. Attention aux doublons de noms ! 26 Un nom de fonction doit être unique et n’est pas sensible à la casse :
  • 27. Passage de paramètres 27 On peut passer une ou plusieurs variables en paramètres à une fonction :
  • 28. Paramètres facultatifs 28 Un paramètre avec une valeur par défaut à sa déclaration devient facultatif : 2 appels équivalents : Les paramètres facultatifs doivent se situer en fin de déclaration
  • 29. Passage de paramètres par valeur 29 • Par défaut, les paramètres sont passés par valeur • A la sortie de la fonction, leur valeur n’est pas modifiée
  • 30. Passage de paramètres par référence 30 • Utiliser & pour passer des paramètres par référence • Leur valeur peut être modifiée par la fonction
  • 31. Retour d’une fonction 31 • L’instruction return permet à la fonction de renvoyer une valeur • Le retour termine immédiatement l’exécution de la fonction
  • 32. Retour de valeur nulle 32 Utiliser return sans valeur renvoie une valeur nulle :
  • 33. Typage fort 33 • On peut préciser le type des paramètres et/ou le type retourné par la fonction • Provoque une erreur si le type fourni ou retourné est différent
  • 34. Typage fort et valeur nulle 34 L’opérateur ? indique que le type fourni ou retourné peut être null :
  • 35. Fonctions sans retour 35 • Utiliser void pour indiquer que la fonction ne doit rien retourner • Provoque une erreur fatale si la fonction retourne une valeur
  • 36. Fonction récursive Version itérative Version récursive 36 Ne pas oublier une condition d’arrêt pour éviter le stack overflow Fonction qui s’appelle elle-même durant son exécution :
  • 37. Portée des variables 37 • Une variable définie dans un fichier est accessible dans tout le fichier • Une variable définie dans une fonction n’est pas accessible à l’extérieur de la fonction • Une variable définie à l’extérieur d’une fonction n’est pas accessible dans la fonction
  • 38. Variables globales 38 • Utiliser global pour rappeler dans une fonction une variable définie à l’extérieur • La variable doit être définie avant l’appel de la fonction
  • 39. Portée des constantes 39 Les constantes sont accessibles dans tout endroit du code :
  • 40. Variables statiques 40 • Utiliser static pour définir des variables statiques de fonction • Leur valeur est conservée à chaque appel
  • 41. Nombre variable de paramètres 41 ...$ indique qu’une fonction peut recevoir un nombre variable de paramètres stockés dans un tableau : ...$ permet aussi d’utiliser un tableau pour fournir plusieurs variables en une seule fois :
  • 42. Fonctions anonymes (closures) 42 • Fonctions créées sans leur donner de nom • Peuvent être utilisées comme valeur d’une variable, qui devient un objet de type Closure use permet d’utiliser la valeur d’une variable déjà déclarée en dehors de la fonction
  • 43. Fonctions standards PHP fournit des dizaines de fonctions pour manipuler les scalaires, dates ou tableaux : 43 Thème Référence officielle Fonctions de gestion des variables http://php.net/manual/fr/ref.var.php Fonctions sur les chaines http://php.net/manual/fr/ref.strings.php Fonctions mathématiques http://php.net/manual/fr/ref.math.php Fonctions sur les dates http://php.net/manual/fr/ref.datetime.php Fonctions sur les tableaux http://php.net/manual/fr/ref.array.php
  • 45. Import de code • Le code peut être enregistré dans des fichiers distincts pour être importé • Le code importé est immédiatement interprété • Les variables et fonctions définies avant un import peuvent être utilisées 45
  • 46. Instructions d’import 46 4 instructions pour importer le code d’un fichier : Instruction Spécificité include provoque un avertissement si fichier non trouvé le fichier peut être importé plusieurs fois include_once provoque un avertissement si fichier non trouvé le fichier n’est importé qu’une fois require provoque une erreur si fichier non trouvé le fichier peut être importé plusieurs fois require_once provoque une erreur si fichier non trouvé le fichier n’est importé qu’une fois
  • 47. Chemin d’accès du fichier à importer 47 Si aucun répertoire précisé, utilisation du paramètre include_path de php.ini : = au répertoire courant (.) par défaut :
  • 48. Chemin relatif ou absolu 48 2 méthodes possibles : • Chemin relatif : • Chemin absolu : Déconseillé Si plusieurs répertoires sont utilisés : • Utiliser les chemins relatifs avec la constante magique __DIR__ comme point de départ • Evite les problèmes d’accès dus au changement de contexte d’exécution du script
  • 49. Portée des fonctions 49 Une fonction définie avant un import peut être appelée :
  • 50. Portée des variables 50 Une variable définie avant un import peut être utilisée :
  • 51. Import unique ou multiple 51 Import unique Import multiple Utiliser l’import unique pour les librairies de fonctions
  • 53. Paramétrage de PHP • Les paramètres par défaut du langage sont chargés dans le fichier php.ini • Leur modification est effective au démarrage du serveurWeb • Certains paramètres sont modifiables le temps de l’exécution du script 53
  • 54. Afficher les paramètres • La fonction phpinfo affiche un résumé des paramètres de PHP au format HTML Ne pas l’utiliser dans un environnement de production 54
  • 55. Gérer les extensions • Les extensions PHP fournissent des fonctions additionnelles à celles du cœur du langage • Exemples d’extensions : ftp, openssl (sécurité), pdo (bases de données), gd2 (graphique) … • Enregistrées dans des fichiers .dll dans le répertoire 55 Exemple d’extensions activées :
  • 56. Paramétrer l’affichage des erreurs • L’affichage des erreurs est déterminé par le paramètre display_errors • A activer sur les serveurs de développement 56 • Sur les serveurs de production, le désactiver par sécurité • Enregistrer les erreurs dans le journal d’erreurs du serveur avec log_errors
  • 57. Paramétrer l’affichage des erreurs • Le paramètre error_reporting détermine les types d’erreur à afficher et/ou enregistrer • Contient une liste de constantes numériques combinées avec les opérateurs sur les bits • Valeur recommandée en développement : • Valeur recommandée en production : 57 Liste complète des constantes : http://php.net/manual/fr/errorfunc.constants.php Paramètre modifiable le temps de l’exécution du script avec la fonction error_reporting :
  • 58. Paramétrer le fuseau horaire • Le fuseau horaire du serveur Web se configure avec date.timezone • Utilisé par les fonctions qui manipulent les dates 58
  • 59. Récupérer la valeur d’un paramètre La fonction ini_get permet de récupérer la valeur d’un paramètre : 59
  • 60. Modifier la valeur d’un paramètre • La fonction ini_set modifie la valeur d’un paramètre • Une fois le script exécuté, la valeur du paramètre est celle contenue dans php.ini Certains paramètres ne sont pas modifiables avec ini_set 60Liste des paramètres (modifiables ou non) : http://php.net/manual/fr/ini.list.php Exemple : définir à 5 minutes (300 secondes) le temps d’exécution max d’un script :
  • 61. Les dates (méthode procédurale) 61
  • 62. Les dates (méthode procédurale) • PHP ne possède pas de type spécifique pour stocker des dates • Différentes fonctions sont fournies pour les manipuler 62
  • 63. Afficher la date/heure courante 63 La fonction date appelée avec un paramètre renvoie la date/heure courante dans une chaine :
  • 64. Formatage de la date 64 Nombreux formats d’affichage disponibles : Liste complète : http://php.net/manual/fr/function.date.php
  • 65. Les timestamps 65 • Toute date à manipuler doit être convertie en timestamp UNIX • Représente l’écart en secondes depuis le 01/01/1970 à minuit (GMT) • La fonction time renvoie le timestamp courant
  • 66. Initialisation d’un timestamp 66 2 méthodes pour créer un timestamp : • Utiliser la fonction mktime(heure, minute, seconde, mois, jour, année) • Utiliser la fonction strtotime qui convertit une chaine au format yyyy-mm-dd hh:mm:ss • On peut fournir seulement la date ou l’heure Une fois créé, le timestamp est donné à la fonction date :
  • 67. Calculs temporels 67 strtotime peut effectuer des calculs temporels en utilisant des formats relatifs (chaines) : Liste des formats relatifs : http://php.net/manual/fr/datetime.formats.relative.php
  • 68. Utiliser la configuration locale 68 • La fonction strftime utilise la configuration locale du serveur pour formater les dates • Utile pour afficher les jours/mois en français ou toute autre langue • La fonction setlocale permet de configurer ces paramètres : Les formats sont différents de ceux de la fonction date Liste complète : http://php.net/manual/fr/function.strftime.php