• Aide
  • Eurêkoi Eurêkoi

Résumé

L'ensemble des possibilités de PHP 7 est traité, avec, pour chaque chapitre, un cas d'application issu de l'expérience professionnelle des auteurs. Les techniques d'audit et d'optimisation ainsi que des conseils en vue d'une préparation à la certification PHP sont présentés. ©Electre 2018


  • Autre(s) auteur(s)
  • Contributeur(s)
  • Éditeur(s)
  • Date
    • DL 2018
  • Notes
    • La couv. porte en plus : "Couvre PHP 7.1 et 7.2"
    • Reprend des parties de l'ouvrage PHP 5 avancé, de Cyril Pierre de Geyer et Éric Daspet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (XXXIV-698 p.) : ill. ; 23 cm
  • Sujet(s)
  • ISBN
    • 978-2-212-67720-1
  • Indice
  • Quatrième de couverture
    • PHP 7 est la dernière version majeure du langage qui propulse 80 % du Web. PHP 7 et son écosystème offrent aux développeurs tous les outils nécessaires à la mise en place d'applications web professionnelles : programmation orientée objet, espaces de noms, fonctions anonymes, création et consommation de services web et d'API, couche d'abstraction de bases de données relationnelles ou extensions permettant la connexion à des bases NoSQL, manipulation de documents XML, support JSON, bibliothèques de composants et frameworks...

      Une bible magistrale avec des exemples et retours d'expérience

      Ce livre reprend l'approche pédagogique du best-seller PHP 5 avancé, qui a été très largement plébiscité et recommandé pendant près d'une dizaine d'années à travers six éditions différentes. Il a été entièrement revu et corrigé par trois professionnels du secteur, Pascal, Julien et Cyril, afin de répondre aux besoins du développement en PHP moderne.

      PHP 7 avancé donne aux développeurs les clés qui leur permettront d'évoluer avec aisance dans le riche univers de PHP 7 et d'en maîtriser les subtilités : bonnes pratiques de conception d'applications web ou en ligne de commandes, formulaires, cookies et sessions, programmation orientée objet poussée, utilisation de JSON et de XML, services web, bases de données relationnelles (MariaDB/MySQL) ou NoSQL (MongoDB/Redis), stratégies d'optimisation et de sécurité...

      La 2e édition de cet ouvrage prend en compte les nouveautés de PHP 7.1 et 7.2. De nouvelles sections ont été ajoutées et de nombreux paragraphes ont été reformulés pour faciliter leur compréhension.

      À qui cet ouvrage s'adresse-t-il ?

      ¤ Aux développeurs souhaitant maîtriser PHP 7

      ¤ Aux développeurs et administrateurs de sites et d'applications web

      ¤ Aux étudiants en informatique souhaitant appréhender les techniques du Web


  • Tables des matières
      • PHP 7 avancé

      • Pascal Martin

      • Julien Pauli

      • Cyril Pierre De Geyer

      • Éric Daspet

      • Eyrolles

      • Chapitre 1
        Qu'est-ce que PHP ?1
      • Introduction à PHP 2
      • Un langage open source2
      • Licence et téléchargement 2
      • Exécution 2
      • Courbe d'apprentissage, l'essor des frameworks 3
      • Que faire avec PHP ?3
      • Fonctionnement couplé à un serveur web 3
      • Applications en lignes de commandes 3
      • Interactions avec d'autres langages via JSON ou XML 3
      • Services web, API et microservices 4
      • Particularités de PHP4
      • De nombreux connecteurs techniques 4
      • Les performances de PHP 5
      • Les bases de données reconnues par PHP 5
      • Services web et interopérabilité 5
      • Bibliothèques externes 6
      • La portabilité 6
      • Coûts de licence 6
      • Coûts de développement 6
      • Le code source 7
      • Dynamisme de la communauté PHP 7
      • Limites de PHP 7
      • Historique7
      • PHP/FI 7
      • PHP 3 8
      • PHP 4 9
      • PHP 5 9
      • PHP 6 : une version qui n'a pas vu le jour 9
      • PHP 7 10
      • Mode de développement du projet PHP10
      • Les différentes équipes 10
      • Cycle de développement du projet PHP 12
      • Les versions majeures12
      • Les versions mineures13
      • Les versions de révision13
      • Les autres types de version14
      • Les versions release candidate (RC) 14
      • Les versions de développement (dev) 14
      • Les guides de migration et le calendrier15
      • Principaux apports de PHP 7 15
      • Nouvelle version du Zend Engine15
      • Opérateur « spaceship »16
      • Gestion des erreurs16
      • Typage scalaire16
      • Architecture et fonctionnement 16
      • Architecture technique16
      • Fonctionnement de PHP17
      • La machine virtuelle de PHP 18
      • PHP en France et dans le monde 19
      • La communauté française19
      • Les ressources d'aide20
      • Le site officiel de PHP 20
      • L'AFUP 22
      • PHPFrance.com 22
      • Planete-php.fr 23
      • PHP, the right way 23
      • DrupalFr 24
      • Afsy 24
      • Développez.com 25
      • MySQL.com 25
      • Chapitre 2
        Installer et configurer27
      • Différents types d'utilisations 27
      • Le serveur web de test intégré28
      • Utilisation simple du serveur web intégré 28
      • Options avancées du serveur web intégré 29
      • Installer PHP sous Microsoft Windows 31
      • Installation automatique31
      • Installation manuelle32
      • Installation de PHP 32
      • Installation d'Apache 34
      • Installation de MySQL/MariaDB 37
      • Installer PHP sous Linux 38
      • Installation automatisée38
      • Installation manuelle de PHP39
      • Extensions additionnelles PECL40
      • Aller plus loin dans le mode CGI, avec FPM40
      • Utiliser PHP FPM 40
      • Installation et compilation 40
      • Gestion de la configuration 41
      • Installer PHP sur Mac 41
      • Configuration de PHP avec php.ini 41
      • Utilisation des extensions42
      • Répertoires contenant les extensions 42
      • Activation d'une extension 42
      • Les directives de configuration43
      • Balises d'ouverture 43
      • Compression des pages 44
      • Limitation d'accès aux répertoires 44
      • Gestion des ressources 44
      • Gestion des erreurs 45
      • Gestion des chemins 46
      • Gestion des fichiers téléchargés 46
      • Gestion des sessions 47
      • Inclusion de fichier automatique 47
      • Gestion de la configuration47
      • Modification de configuration dans un script 48
      • Modification de configuration via Apache 49
      • Modification de configuration via FPM 50
      • Localisation de php.ini et utilisation de plusieurs fichiers de configuration 50
      • La gestion de dépenses 52
      • Généralité sur Composer53
      • Utilisation de Composer 54
      • Installer et mettre à jour ses dépendances56
      • Installer les dépendances 56
      • Mettre à jour une dépendance 56
      • Chapitre 3
        Les structures de base57
      • Insertion de PHP dans HTML 57
      • Balises d'ouverture et de fermeture58
      • Balise d'affichage rapide 58
      • Les commentaires58
      • Commentaire en annotation 59
      • Enchaînement des instructions60
      • Erreur courante 60
      • Structure du document61
      • Affichage et envoi de code HTML 62
      • Exécuter du code PHP62
      • Via un serveur web 62
      • En ligne de commandes 63
      • Exécution en programme autonome 63
      • Constantes et variables 64
      • Variables64
      • Syntaxe des variables 64
      • Déclaration et types 64
      • Portée des variables 65
      • Test d'existence 67
      • Destruction de variable 68
      • Variables dynamiques 68
      • Constantes69
      • Types de données 70
      • Booléens (boolean)71
      • Les nombres entiers (integer)71
      • Les nombres flottants (double, float)71
      • Les chaînes de caractères (string)72
      • Interprétation des variables 72
      • Le caractère d'échappement (ou protection) 73
      • Délimitation par apostrophes 74
      • Syntaxe Heredoc 75
      • Syntaxe Nowdoc 76
      • Accéder à un caractère d'une chaîne 76
      • Les tableaux (array)77
      • Tableaux indexés numériquement 77
      • Tableaux associatifs 78
      • Tableaux multidimensionnels 80
      • Transtypage81
      • Règles de conversion 81
      • Forcer une conversion 83
      • Chapitre 4
        Traitements de base85
      • Les opérateurs 85
      • Opérateurs d'affectation85
      • Affectation par copie et références 86
      • Opérateurs arithmétiques87
      • L'utilité du modulo (%) 88
      • Incrémentation 89
      • Opérateurs combinés89
      • La concaténation90
      • Opérateurs de comparaison90
      • L'opérateur (...) 91
      • Opérateurs logiques92
      • Opérateurs sur les bits92
      • Opérateur ternaire93
      • Opérateur de nullité94
      • Priorités entre opérateurs94
      • Structures de contrôle 95
      • Les conditions95
      • L'instruction if 95
      • La clause else 96
      • L'instruction elseif 97
      • Les accolades dans les conditions 98
      • L'instruction switch 99
      • Les boucles100
      • L'instruction while 100
      • L'instruction for 101
      • L'instruction foreach 102
      • Les instructions d'arrêt105
      • Break 105
      • Continue 105
      • L'instruction goto106
      • Inclure des fichiers 107
      • Inclusions et balises PHP108
      • Différence entre require et include109
      • require_once et include_once109
      • Valeur de retour de require et include109
      • Chapitre 5
        Les fonctions111
      • Les fonctions utilisateur 111
      • Déclaration d'une fonction112
      • Valeur par défaut 113
      • Valeur de retour 114
      • Appel de fonction114
      • Appel indirect 116
      • Visibilité des variables116
      • Portée des variables 117
      • Passage par valeur ou référence 118
      • Valeur de retour par référence 119
      • Retourner plusieurs valeurs119
      • Nombre de paramètres variables120
      • Typage des arguments et du retour122
      • Fonctions anonymes123
      • Fermetures lexicales 123
      • Les fonctions internes 125
      • Informations de configuration125
      • Affichage de débogage126
      • Fonctions mathématiques127
      • Connaître les extrémités 127
      • Arrondir des valeurs 128
      • Créer des valeurs aléatoires 128
      • Travailler sur différentes bases mathématiques 129
      • Fonctions réseau130
      • Résolution DNS d'une adresse IP 130
      • Corrélation IP/DNS 130
      • Fonctions de chiffrement et de hachage132
      • Exécution de code132
      • Fonction appelée à l'arrêt du script 132
      • Exécution d'une chaîne de code PHP 133
      • Chapitre 6
        Chaînes de caractères135
      • Un caractère, une chaîne 135
      • ASCII136
      • Unicode136
      • Fonctions d'affichage 137
      • Affichages simples137
      • Affichages avec masques137
      • Des masques pour gérer plusieurs langues 137
      • Syntaxe des masques de printf et assimilés 138
      • Fonctions assimilées à printf 139
      • Informations sur une chaîne 140
      • Accéder à un caractère précis140
      • Valeur ASCII d'un caractère140
      • Taille d'une chaîne141
      • Lister les mots d'une chaîne141
      • Position d'une sous-chaîne143
      • Présence de certains caractères144
      • Conversions et formatages 144
      • Protections et échappements144
      • Protections classiques 144
      • Protection pour bases de données 145
      • Protections pour HTML 145
      • Conventions d'affichage locales148
      • Manipulations de chaînes 149
      • Recherche d'une sous-chaîne149
      • Récupérer une sous-chaîne149
      • Remplacer un motif150
      • Fonctions d'élagage151
      • Remplissage151
      • Changement de casse152
      • Coupure de paragraphes153
      • Chaînes de caractères binaires 154
      • Chaînes de caractères multi-octets et jeux de caractères 155
      • L'extension iconv155
      • L'extension mbstring156
      • Installation et configuration 157
      • Utilisation 157
      • L'extension intl pour transformer, comparer, trier et normaliser158
      • Installation 158
      • Utilisation 159
      • Chapitre 7
        Les expressions rationnelles163
      • Syntaxe 163
      • Protections et échappements164
      • Délimitation et présentation165
      • Syntaxe générale d'une expression 165
      • Les délimiteurs 165
      • Chaîne de recherche simple165
      • Construction d'expression166
      • Choix entre plusieurs chaînes de caractères 166
      • Liste de caractères autorisés 167
      • Liste de caractères interdits 167
      • Classes de caractères prédéfinies 168
      • Codes spéciaux prédéfinis 168
      • Gestion des occurrences multiples169
      • Nombre d'occurrences fixe 169
      • Nombre d'occurrences délimité 169
      • Nombre d'occurrences semi-délimité 170
      • Syntaxe réduite 170
      • Capture gloutonne ou non gloutonne 170
      • Répétition de sous-chaînes 170
      • Assertions171
      • Imposer les premiers et derniers caractères 171
      • Délimitation des lignes 172
      • Délimitation des mots 172
      • Assertion sur la suite 172
      • Assertion sur ce qui précède 173
      • Captures173
      • Réaliser une capture 173
      • Empêcher une capture 173
      • Utiliser le résultat d'une capture 173
      • Exemples d'utilisation des captures 174
      • Modificateurs174
      • Modificateurs locaux 174
      • Les fonctions 175
      • Chercher une correspondance175
      • Récupérer des sous-chaînes 175
      • Rechercher à partir d'une certaine position 175
      • Rechercher sur plusieurs sources 176
      • Rechercher toutes les occurrences 176
      • Effectuer des remplacements177
      • Réutilisation des chaînes capturées 178
      • Limitation des remplacements 178
      • Rechercher sur plusieurs textes 179
      • Rechercher plusieurs motifs 179
      • Effectuer plusieurs remplacements 179
      • Utiliser des fonctions de rappel 180
      • Échappement et protections180
      • Performances des expressions rationnelles 180
      • Fonctionnement du moteur181
      • Stratégies181
      • Boucles infinies182
      • Chapitre 8
        Utilisation des tableaux183
      • Déclaration et initialisation d'un tableau 183
      • Remplir avec des valeurs consécutives185
      • Déboguer un tableau 185
      • Taille d'un tableau 185
      • Tester l'existence et le type d'un tableau 187
      • Recherche d'un élément 187
      • Présence dans le tableau187
      • Recherche de la clé correspondante188
      • Nombre d'occurrences d'un élément189
      • Récupération aléatoire d'éléments189
      • Trier les tableaux 190
      • Tri par valeur190
      • Tri en ordre inverse190
      • Garder les associations clé-valeur191
      • Tri par clé191
      • Tri naturel192
      • Trier avec une fonction utilisateur192
      • Tri multicritère193
      • Extractions et remplacement 194
      • Affecter automatiquement des variables à partir des données d'un tableau194
      • Conversion tableau (...) chaînes195
      • Extraction d'un sous-tableau196
      • Remplacement d'un sous-tableau196
      • Extraction d'une colonne 197
      • Gestion des clés et des valeurs 198
      • Liste des clés utilisées198
      • Liste des valeurs utilisées198
      • Échanger les clés et les valeurs199
      • Fusions et séparations 199
      • Fusion de plusieurs tableaux199
      • Fusion récursive200
      • Séparation d'un tableau en plusieurs201
      • Différences et intersections 202
      • Comparaisons de tableaux202
      • Différences entre tableaux202
      • Intersections entre deux tableaux203
      • Gestion des doublons203
      • Gestion des piles et des files 203
      • Navigation dans les tableaux 204
      • Astuces avancées avec les tableaux 204
      • Gestion des index par PHP204
      • Conversion automatique des clés de tableau205
      • Tester un tableau205
      • Transtypage206
      • Opérations impossibles avec les tableaux207
      • Chapitre 9
        Les formulaires209
      • Formulaires HTML 209
      • Caractères spéciaux et HTML 210
      • Création d'un formulaire 211
      • Déclaration d'un formulaire211
      • Méthode d'envoi du formulaire211
      • Méthode GET (transmission par URL) 211
      • Méthode POST 212
      • Quelle méthode utiliser ? 212
      • Envoi de fichiers213
      • Réception des données en PHP 213
      • Utilisation des variables superglobales213
      • Récupération d'une donnée simple214
      • Retours à la ligne et zones de texte214
      • Utilisation des cases à cocher215
      • Validation de données216
      • Valider les types simples avec ctype 216
      • Valider des données plus complexes avec Filter 217
      • Listes à sélections multiples223
      • Gestion des images cliquables224
      • Téléchargements (envoi) de fichiers224
      • Utilisation et traitement du fichier 225
      • Gérer les noms de fichiers 225
      • Détection d'erreurs 226
      • Formulaire dynamique et tableaux227
      • Autres problématiques 227
      • Gestion du temps227
      • Gestion de la taille des données228
      • Sécurité et données reçues228
      • Procédure de gestion des formulaires229
      • Chapitre 10
        HTTP et interactions avec le client web231
      • Descriptif du contexte web 231
      • Client-serveur231
      • Aperçu de HTTP233
      • Requête et réponse 233
      • En-tête et contenu 234
      • Utiliser HTTP avec PHP 235
      • En utilisant les variables superglobales235
      • Nom du serveur 236
      • Racine du serveur 236
      • Autres informations sur le serveur 236
      • Adresses IP et port du client 236
      • Nom d'hôte 238
      • Adresse IP et port du serveur 238
      • Méthode d'accès invoquée 238
      • Serveur demandé 239
      • Protocole utilisé 239
      • L'adresse demandée (URL) 239
      • Chaînes de GET 239
      • Chemin d'accès 240
      • Page référente 240
      • Négociation de contenu 241
      • Nom et version du navigateur 241
      • Nom du script exécuté 242
      • Utiliser HTTP en accédant au flux brut242
      • Les différentes fonctions PHP relatives à HTTP243
      • Manipuler les en-têtes 244
      • Manipuler d'autres concepts de HTTP 245
      • Interactions PHP/JavaScript 247
      • Le tampon de sortie de PHP247
      • Le tampon par défaut 248
      • Créer un tampon utilisateur 248
      • Chapitre 11
        Les cookies et les sessions251
      • Présentation 251
      • Forme du cookie sur l'ordinateur client252
      • Lecture et écriture d'un cookie 253
      • Envoi d'un cookie253
      • Lecture d'un cookie254
      • Modifier les valeurs d'un cookie255
      • Validité et date d'expiration 256
      • Suppression d'un cookie257
      • Tableaux et types complexes 257
      • Restriction de portée du cookie259
      • Limitations et sécurité 260
      • Limitations dues aux navigateurs260
      • Les cookies n'ont aucune sécurité260
      • Qu'est-ce qu'une session ? 261
      • Lecture et écriture 262
      • Utilisation avancée 263
      • Fonctionnement interne des sessions263
      • Suppression d'une session264
      • Définition manuelle de l'initialisation264
      • Stockage des données de session265
      • Paramètres du cookie265
      • Accès concurrents aux sessions266
      • Configuration des sessions PHP 266
      • Initialisation des sessions266
      • Stockage des données de session267
      • Paramètres du cookie267
      • Expiration des sessions267
      • Gestion du cache268
      • Transmission de l'identifiant269
      • Gestionnaires de sessions 270
      • Définir un gestionnaire personnalisé270
      • Limitations et sécurité 274
      • Cachez les sessions274
      • N'utilisez pas la réécriture des liens274
      • Les identifiants par défaut suffisent275
      • Attaque par fixation de session275
      • Vérifiez l'identité de l'utilisateur276
      • N'ayez pas confiance276
      • Cas d'application 276
      • Authentification par formulaire276
      • Contexte 276
      • Réalisation 277
      • Chapitre 12
        Gestion des objets281
      • Introduction aux objets 281
      • Pourquoi programmer en objet ?281
      • Qu'est-ce qu'un objet ?282
      • Attributs et méthodes 282
      • Qu'est-ce qu'une classe ?282
      • Qu'est-ce qu'une instance ?283
      • Utilisation simple des objets 283
      • Déclarer une classe283
      • Attributs 283
      • Méthodes 284
      • Constantes 284
      • Utilisation des objets285
      • Instanciation 285
      • Utilisation d'un attribut 286
      • Utilisation des méthodes 287
      • Constantes 288
      • Déréférencement des méthodes 290
      • Affichage d'un objet 291
      • Vérifier le type d'un objet291
      • L'opérateur instanceof 291
      • La fonction get_class() 292
      • La syntaxe :: class 292
      • Copie et référence293
      • Des objets passés comme références293
      • La copie explicite d'objet, ou clonage294
      • Clonage par défaut 294
      • Clonage manuel 295
      • Contrôles d'accès pendant le clonage 295
      • Égalité et identité296
      • Constructeurs et destructeurs 297
      • Constructeur297
      • Destructeur299
      • La notion d'héritage 300
      • Définition de la notion d'héritage300
      • Définition d'une classe héritée300
      • Redéfinition d'attribut ou de méthode302
      • Héritage strict 302
      • Accès aux méthodes parentes303
      • Sûreté de programmation 304
      • Contrôle d'accès304
      • Accès public 304
      • Accès privé 305
      • Accès protégé 306
      • Utilisation 306
      • Redéfinition des contrôles d'accès 307
      • Typage307
      • Classes abstraites et interfaces309
      • Classes abstraites 309
      • Interfaces 310
      • Classes et méthodes finales 314
      • Accès statiques 314
      • Accès à une classe arbitraire314
      • Définition en vue d'un accès statique315
      • Accès à la classe en cours315
      • Accès à la classe parente315
      • Résolution statique à la volée316
      • La sérialisation et la désérialisation 317
      • Utilisation de _sleep() et _wakeup()318
      • L'interface Serializable319
      • La classe _PHP_Incomplete_Class320
      • Exemple : utilisation avec les sessions320
      • Sécurité : autoriser, interdire ou limiter la désérialisation de classes320
      • Surcharge 321
      • Affectations des attributs322
      • Lecture d'attribut (Mutator)322
      • Test d'existence d'un attribut323
      • Suppression d'un attribut323
      • Appel d'une méthode (Accessor)323
      • Appel d'une méthode statique324
      • Chapitre 13
        Erreurs et exceptions325
      • Explications sur les erreurs 325
      • Qu'est-ce qu'une erreur ?325
      • Pourquoi gérer les erreurs ?326
      • Pendant le développement 326
      • En production 326
      • Que faire avec les erreurs ?326
      • Intercepter les erreurs 326
      • Enregistrer les erreurs 327
      • Les erreurs PHP 327
      • Description d'une erreur PHP327
      • Les bases d'une gestion d'erreurs328
      • Régir à une erreur 328
      • Régir à une erreur avec @ 329
      • Configurer sa gestion d'erreurs 329
      • Les différents niveaux d'erreur 330
      • Filtrer les erreurs utiles 332
      • Créer une erreur manuellement333
      • Aide au développeur 334
      • Affichage personnalisé 334
      • Journalisation des erreurs (log)335
      • Journalisation automatique 335
      • Utilisation manuelle du journal 336
      • Utiliser le journal système 337
      • Personnaliser le gestionnaire d'erreurs339
      • Erreurs fatales internes à PHP 340
      • Les exceptions 340
      • Description d'une exception340
      • Personnalisation des exceptions342
      • Lancement d'une exception342
      • Réception d'une exception343
      • Filtrage des exceptions reçues343
      • Propagation des exceptions345
      • Interception par un bloc parent 345
      • Renvoi d'une exception au bloc parent 345
      • Gestionnaire d'exceptions par défaut 346
      • Utilisation des exceptions347
      • Les exceptions de PHP pour intercepter les erreurs fatales 348
      • Exceptions et code partagé 349
      • Les autres types d'exceptions de PHP 350
      • Exceptions imbriquées 352
      • Politiques de gestion d'erreurs 352
      • Le développement352
      • Être averti lors d'un problème353
      • Toujours agir lors d'une erreur353
      • Externaliser les alertes de sécurité353
      • Gardez des traces sur le contexte353
      • Chapitre 14
        Typage en PHP355
      • Gérer le type des variables 355
      • Approche par défaut du typage356
      • Déterminer le type d'une variable356
      • Comparer des variables en tenant compte de leurs types357
      • Typage des fonctions et des méthodes 358
      • Introduction : types des paramètres et valeurs de retour358
      • Définir le type des paramètres359
      • Définir le type de la valeur de retour359
      • Déclarations de types scalaires (bool, int, float et string)360
      • Mettre en place une approche souple du typage 361
      • Mettre en place une approche stricte du typage 363
      • Les types nullables365
      • Déclarations de types non scalaires366
      • Tableaux 366
      • Classes et interfaces 367
      • Callable 369
      • Iterable 371
      • Liste des mots-clés réservés liés au typage 371
      • Chapitre 15
        Gestion des dates373
      • Les dates et heures  : avant de commencer 373
      • Le format « timestamp »373
      • La classe Datetime et sa famille374
      • La notion de « timezone »374
      • Les pièges des dates375
      • Les dates en timestamps 376
      • Formater une date/heure376
      • Utiliser un format correspondant à une locale378
      • Validité et comparaison de dates379
      • Une approche plus mûre : DateTime et sa famille 380
      • DateTimeZone381
      • DateTime, la classe au centre de la gestion des dates382
      • Créer un objet DateTime 382
      • Créer un objet DateTime à partir d'un format spécifique de date 383
      • Modifier une date 383
      • Calculer une différence entre deux dates 384
      • Formater une date 385
      • Et en cas d'erreur ? 386
      • Fuseau et heure d'été actuels et passés 386
      • DateInterval387
      • Des dates immuables avec DateTimeImmutable389
      • DatePeriod389
      • Chapitre 16
        Gestion de flux simplifiés : les fichiers391
      • Lecture et écriture 391
      • Fonctions d'accès rapide392
      • Lecture rapide 392
      • Lecture des fichiers de type configuration (ini) 393
      • Exploiter un fichier CSV 396
      • Écriture rapide 398
      • Ouverture d'un fichier399
      • Fichiers distants 400
      • Mode d'ouverture 400
      • Lecture d'un fichier401
      • Lire caractère par caractère 402
      • Lire ligne par ligne 402
      • Lire un fichier entier 402
      • Écriture dans un fichier403
      • Positions dans le fichier404
      • Placer le pointeur en début de fichier 404
      • Placer le pointeur en un point du fichier 405
      • Connaître la position du pointeur 405
      • Détection de fin de fichier406
      • Fermeture d'un fichier406
      • Accès concurrents et verrouillage de fichiers407
      • Troncature à l'ouverture 407
      • Manipulation de fichiers 409
      • Copie et déplacement409
      • Création et effacement409
      • Création de fichier 409
      • Effacement de fichier 410
      • Liens410
      • Liens physiques 411
      • Liens symboliques 411
      • Fichiers temporaires411
      • Gestion des répertoires 412
      • Parcourir un répertoire412
      • Méthode objet 412
      • Approche procédurale 413
      • Filtre et listage rapide 413
      • Et avec la SPL ? 414
      • Position dans l'arborescence415
      • Créations et effacements416
      • Informations sur les fichiers 416
      • Existence d'un fichier417
      • Dates de fichiers417
      • Taille de fichier418
      • Espace disque disponible418
      • Nom et adresse d'un fichier419
      • Nature des fichiers419
      • Liens symboliques420
      • Permissions et droits d'accès 420
      • Changement de propriétaire421
      • Modifier les permissions421
      • Masque par défaut422
      • Sécurité et fichiers 422
      • Permissions et droits d'accès422
      • Arguments utilisateur422
      • open_basedir423
      • La SPL et les fichiers 423
      • Obtenir des informations sur un fichier avec SplFileInfo423
      • Manipuler un fichier avec SplFileObject425
      • Cas d'application 426
      • Outil de gestion documentaire simple426
      • Contexte 426
      • Réalisation 427
      • Chapitre 17
        Utiliser une base de données431
      • Pdo 432
      • PDO : une couche d'abstraction de SGBD432
      • Fonctionnalités 432
      • Bases de données reconnues 433
      • Installation 433
      • Les classes de PDO 433
      • DSN et ouverture de connexion433
      • Structure du DSN 434
      • Ouverture de connexion 435
      • Erreur de connexion 435
      • Fermeture de connexion 436
      • Options et attributs de la connexion 436
      • Lancer une requête437
      • Requête de sélection 437
      • Écrire des données en base 438
      • Attention à l'échappement ! 438
      • Parcourir un jeu de résultats440
      • Les requêtes préparées443
      • Construction d'une requête préparée 445
      • Préparer une requête 445
      • Lier des données à des paramètres et les exécuter 445
      • Déboguer une requête préparée 447
      • Fermeture de la requête préparée 447
      • Gestion des erreurs448
      • Utiliser les exceptions 449
      • Gestion transactionnelle449
      • Un bref point sur les SGBD-R et le langage SQL 450
      • Le modèle relationnel451
      • Fonctionnalités451
      • Transactions 451
      • Clés étrangères et intégrité référentielle 452
      • Procédures stockées et déclencheurs 452
      • Vues 452
      • Le SQL, un langage standardisé ?452
      • La structure des données453
      • Créer une base de données 453
      • Créer des tables 454
      • Modifier des tables 457
      • Supprimer des tables 457
      • Les index 457
      • Manipuler des données458
      • Insérer des données (INSERT) 458
      • Modifier des données (UPDATE) 459
      • Effacer des données (DELETE) 460
      • Filtrer avec la clause WHERE 461
      • Sélectionner des données (SELECT) 462
      • Gérer les transactions 466
      • Conclusions 466
      • API spécifiques à chaque SGBD 467
      • Accéder à une base de données MariaDB/MySQL avec mysqli467
      • Accéder à une base de données SQLite469
      • Une introduction à no-SQL 471
      • MongoDB : orientation document471
      • Principe général de MongoDB 472
      • Prérequis et installation 472
      • Connexion à MongoDB et collection 473
      • Lister les documents d'une collection 474
      • Requêtes plus avancées 474
      • Opérations d'écriture 475
      • Redis : orientation clé-valeur475
      • Principe général de Redis 476
      • Prérequis et installation 476
      • Connexion à Redis 476
      • Écrire et lire une donnée 477
      • Opérations plus avancées 478
      • Chapitre 18
        POO avancée481
      • Les espaces de noms 481
      • Utilisation simple d'un espace de noms482
      • Définition simple d'un espace de noms 482
      • Utilisation simple d'un espace de noms 483
      • Déclarer plusieurs espaces de noms dans un même fichier484
      • Espace de noms par défaut, l'espace de noms racine484
      • Déclarer explicitement dans l'espace de noms racine 485
      • Redéfinir des classes, fonctions et constantes de PHP 485
      • Imbrication d'espaces de noms486
      • Accéder à un élément d'un espace de noms différent486
      • Cas de la programmation dynamique 487
      • Déterminer l'espace de noms courant488
      • Importer des espaces de noms488
      • Importer un espace de noms complet 488
      • Importer une classe ou une interface 489
      • Syntaxe d'imports groupés 490
      • Limitations des imports 491
      • Alias d'espace de noms491
      • Conventions de nommage492
      • Chargement automatique des classes (autoload) 493
      • Définition d'une fonction de chargement automatique495
      • Fonction de chargement automatique native496
      • Supprimer une fonction de chargement automatique497
      • Obtenir la liste des fonctions de chargement automatique497
      • La fonction _autoload()498
      • Réutilisation horizontale : les traits 498
      • Déclarer un trait499
      • Utiliser un trait499
      • Résolution de conflits500
      • Visibilité des méthodes importées502
      • Itérateurs et générateurs 502
      • Itération par défaut : visibilité sur les propriétés publiques504
      • Utilisation simple504
      • Utilisation complète avec Iterator Aggregate509
      • L'interface Traversable511
      • Les itérateurs de la SPL511
      • Générateurs511
      • Écrire un générateur 512
      • Retourner un résultat 514
      • Yield from 514
      • Passer une valeur au générateur 515
      • Notations d'index : ArrayAccess 516
      • Fonctions anonymes : la classe Closure 518
      • Les classes anonymes 520
      • Introspection 521
      • Principes pour démarrer522
      • Les différents objets à manipuler 522
      • Instanciation et premier export 523
      • Les fonctions524
      • Implémentation de la fonction 525
      • Les paramètres 525
      • Retour 526
      • Gestion des documentations en ligne 527
      • Exécution de la fonction 528
      • Les objets, classes et interfaces528
      • Instanciation de classe 529
      • Gestion des méthodes et des attributs 529
      • Droit d'accès et déclaration 529
      • Exécution de la méthode 529
      • Les attributs530
      • L'introspection au quotidien530
      • Chapitre 19
        Gestion avancée des flux et du réseau531
      • Gestion des sockets réseau 531
      • Ouverture532
      • Types de sockets 532
      • Lecture et écriture533
      • Fermeture533
      • Fonctions de contrôle533
      • Fonctions bloquantes 533
      • Temps d'expiration 534
      • Statut de la connexion 535
      • Gestion unifiée des flux 536
      • Types de flux gérés536
      • Liste des abstractions gérées 536
      • Obtenir la liste des types de flux gérés 539
      • Utilisation simple540
      • Ouverture 540
      • Lecture et écriture 541
      • Fonctions de contrôle 541
      • Fermeture 543
      • Fonctions réseau 543
      • Autres fonctions 544
      • Contextes de flux544
      • Création d'un contexte 544
      • Modification d'un contexte 545
      • Lecture d'un contexte 545
      • Ouvertures de flux 545
      • Fonctions d'accès rapide 546
      • Filtres546
      • Utilisation 546
      • Liste des filtres prédéfinis 547
      • Ajouter un filtre personnalisé 547
      • Types de flux personnalisés549
      • Cas d'application 551
      • Sauvegardes automatiques pour interface réseau551
      • Contexte 551
      • Réalisation 551
      • Conversion entre jeux de caractères553
      • Contexte 553
      • Réalisation 553
      • Un serveur de chat asynchrone555
      • Chapitre 20
        Échanges de données : XML, JSON et API557
      • XML 557
      • XML, un format standardisé558
      • Aperçu de la norme XML558
      • Entités et caractères spéciaux 559
      • Exemples d'utilisation 559
      • SimpleXLM559
      • Charger du XML et en obtenir 560
      • Lire les données 561
      • Écrire des données avec SimpleXML 564
      • DOMDocument565
      • Structure générale 566
      • Créer/charger un document 567
      • Obtenir du XML, enregistrer un document 568
      • Accéder à des noeuds 568
      • Naviguer dans le document 569
      • Les attributs 571
      • Modifier un document XML 572
      • XmlReader et XmlWriter576
      • Lire un fichier avec XMLReader 577
      • Écrire un fichier avec XMLWriter 578
      • Une introduction à Xpath579
      • Exemple avec SimpleXML 579
      • Exemple avec DOMDocument 580
      • Json 580
      • Encoder une donnée en JSON581
      • Décoder une chaîne JSON583
      • La sérialisation d'objets en JSON : l'interface JsonSerializable585
      • Gestion d'erreurs586
      • API 586
      • Des appels distants587
      • Appels d'API avec les flux de PHP587
      • Appels d'API avec des composants plus évolués589
      • Exemple d'appel d'API avec curl 589
      • Exemple d'appel d'API avec Guzzle 590
      • Exposer une API590
      • Une API simple de calcul 590
      • Les méthodes HTTP 592
      • Des routes cohérentes 592
      • Chapitre 21
        PHP en lignes de commandes : CLI595
      • Installations et différences avec le fonctionnement en mode web 596
      • Installer php-cli596
      • Particularités de php-cli596
      • Rédiger ses premiers scripts 597
      • Apprivoiser le binaire CLI de PHP597
      • Invoquer de l'aide 598
      • Modifier la configuration 599
      • Exécuter du code depuis le Shell 599
      • Tester les erreurs de syntaxe 599
      • Savoir détecter l'utilisation de CLI599
      • Créer des scripts exécutables600
      • Utiliser le bon code de retour 600
      • Interagir avec l'utilisateur 601
      • Lire les options et arguments du programme602
      • Utiliser $_SERVER et $argc / $argu 602
      • Utiliser getopt() 604
      • Lire l'environnement 606
      • Définir une variable d'environnement607
      • Lire une variable d'environnement depuis PHP607
      • Les entrées/sorties 608
      • Consommer le flux d'entrée608
      • Écrire sur le flux de sortie610
      • Écrire sur le flux d'erreur610
      • PHP et les processus : exécuter des programmes 612
      • Lancement sans interaction612
      • Commande Shell rapide 613
      • Exécution d'un programme 613
      • Programmes en tâche de fond 615
      • Lancement interactif616
      • Ouverture des flux standards 616
      • Lecture et écriture 619
      • Statut des programmes exécutés 619
      • Fermeture 620
      • Sécurité et programmes externes621
      • Données externes dans la commande 621
      • Cas d'application 621
      • Système de paiement en ligne621
      • Contexte 621
      • Réalisation 622
      • Chapitre 22
        Sécurité625
      • Qu'est-ce que la sécurité ? 625
      • Préoccupations du gestionnaire626
      • Préoccupations de l'utilisateur626
      • Importance des données utilisateur 627
      • Pourquoi parler de l'utilisateur ?327
      • Les risques 628
      • Déontologie 628
      • Installation, configuration de PHP et sécurité 628
      • Interface avec le serveur web629
      • Mode FastCGI avec PHP-FPM 629
      • Module Apache 629
      • Gestion des erreurs629
      • open_basedir et restrictions630
      • open_basedir 630
      • Sources et fichiers externes 630
      • Modules et processus externes 631
      • Sessions et identifiants632
      • Répertoire de stockage 632
      • Réécriture des liens 631
      • Vol et fixation de session 633
      • Mises à jour des logiciels633
      • Stockage des données et fichiers634
      • En dehors de la hiérarchie web 634
      • Avec des droits d'accès restreints 635
      • Interdiction d'accès pour le serveur web 635
      • Extensions des fichiers 635
      • Sécurité de l'application 636
      • Vérification des entrées utilisateur636
      • Paramètre dans une liste prévisible 636
      • Paramètre avec des critères connus 637
      • Cas par défaut dans une vérification 638
      • Envoi/upload de fichiers 639
      • Concordance et transtypage 639
      • Éviter les principales attaques641
      • Injection SQL 641
      • Cross Site Scripting 642
      • Cross Site Request Forgery 643
      • Exécution de commandes 644
      • Autres types de données et importance 644
      • Emplacement des contrôles645
      • Stockage du résultat chez l'utilisateur 645
      • Contrôles JavaScript 646
      • Mauvaises assertions 646
      • Protection par le secret 647
      • Gérer les erreurs647
      • Sécuriser les sessions647
      • Création manuelle des identifiants 648
      • Protection contre les vols de sessions 648
      • Protection contre la fixation de session 649
      • Chiffrement et sécurité649
      • Chiffrement et hachage 650
      • Chiffrement, hachage et mots de passe 651
      • Méthodes de chiffrement et de hachage offertes par PHP 652
      • Quelques bonnes habitudes 658
      • Vérifiez vos résultats658
      • Vérifiez vos fichiers de logs et de statistiques 659
      • Ne croyez pas l'utilisateur659
      • Restreignez les accès 660
      • Mais n'exagérez pas660
      • Faites-vous former ou formez vos équipes661
      • Faites réaliser un audit externe661
      • Chapitre 23
        Installation et configuration avancées663
      • Un environnement de développement évolué 663
      • Installation sous Vagrant ou Docker663
      • Vagrant : la virtualisation reproductible 664
      • Docker : une approche à base de conteneurs 665
      • Installer un environnement de développement666
      • Un éditeur de code, un environnement intégré 666
      • Xdebug : une extension indispensable en développement !667
      • Utiliser PHP en production 668
      • Plusieurs schémas d'architecture669
      • Un seul serveur 669
      • Séparer PHP et le stockage des données 669
      • Plusieurs serveurs web/PHP 670
      • Plusieurs serveurs de bases de données 670
      • Des serveurs web séparés pour gérer le statique et le dynamique 672
      • Des serveurs de cache HTTP 672
      • D'autres systèmes de stockage ou de cache 674
      • Et le cloud alors ? 675
      • Installation sous Linux675
      • Installation depuis les paquets d'une distribution 676
      • Compilation manuelle de PHP 676
      • Maintenez PHP à jour ! 678
      • Configuration478
      • Surveillance des erreurs 678
      • Sécurité 679
      • Performances et montée en charge 680
      • Configuration avancée de PHP-FPM681
      • Directives générales de configuration 681
      • Directives de configuration des groupes de processus 681
      • Le cache d'opcodes (OPCache)683
      • Gestion de la mémoire 685
      • Configurer le nombre de fichiers et leur revalidation 686
      • Surveiller, monitorer le cache 687
      • Index689

  • Origine de la notice:
    • FR-751131015 ;
    • Electre
  • Disponible - 681.227 MAR

    Niveau 3 - Informatique