Cours complet de programmation en PHP, destiné aux développeurs étudiants, professionnels ou autodidactes.
--- Les fondamentaux du langage (2ème partie) ---
- Tableaux
- Fonctions
- Import de code
- Paramétrage de PHP
- Dates (procédural)
Version HD et exemples de code source disponibles sur demande.
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
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
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
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 :
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 :
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
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
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 :
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