H - Fonctionnalités PHP couvertes
Chaque chapitre de ce livre introduit un morceau de PHP : un mot-clé, un opérateur, une interface native, un mécanisme du langage. Cette annexe les rassemble en une seule liste, chacun relié à son entrée dans le PHP Dictionary, une référence indépendante et en croissance constante des termes, mots-clés, fonctions et du jargon de PHP. Servez-vous-en comme d’un glossaire : quand un terme d’un chapitre précédent revient et que vous voulez la version courte, sans avoir à retrouver le chapitre qui l’a introduit.
Quelques éléments ci-dessous n’ont pas encore d’entrée dans le dictionnaire. Ils sont listés quand même, tels quels, sans lien.
Syntaxe et bases
- Balise d’ouverture
<?php: fait passer l’analyseur du mode HTML au mode PHP. - Balise courte d’affichage
<?= ?>: raccourci qui combine<?phpet unechoimmédiat. echoetprint: les constructions d’affichage, traitées au chapitre 1.- Interpolation de chaînes : insérer des variables directement dans une chaîne entre guillemets doubles.
- Commentaires et docblocks :
//,#,/* */, et la forme structurée/** */que les outils lisent, au chapitre 3.
Types et comparaison
- Conversion implicite de type : la conversion automatique entre types que PHP effectue selon le contexte.
- Transtypage : la conversion explicite avec
(int),(string)et les autres. - Booléen,
gettype(),var_dump(): le système de types scalaires et comment l’inspecter, au chapitre 3. declare(strict_types=1): désactive la coercition implicite des scalaires pour un fichier.- Opérateur d’identité
===, opérateur d’égalité==, comparaison souple : les deux familles de comparaison et là où elles divergent. - Opérateur vaisseau spatial
<=>: comparaison à trois issues, renvoie-1,0ou1. - Types union : un type de paramètre ou de retour exprimé comme
int|string. TypeError: levée quand une valeur ne respecte pas une déclaration de type.- Tableau : l’unique type composé de PHP, à la fois liste et dictionnaire, au chapitre 8.
array_key_exists()etisset(): vérifier la présence d’une clé, ou la présence d’une valeur non nulle.
Structures de contrôle
if/elseif/elseet les structures conditionnelles en général.while,do-while,for,foreach: les boucles, au chapitre 3.breaketcontinue: sortir d’une boucle ou passer au tour suivant, avec leur argument numérique facultatif pour les boucles imbriquées.switchetmatch: les deux constructions de branchement par comparaison, l’une instruction, l’autre expression, traitées ensemble au chapitre 6 puis comme syntaxe de motifs au chapitre 19.list()/ déstructuration de tableau et la déstructuration en général : décomposer un tableau en variables séparées en une seule étape, au chapitre 19.
Fonctions et closures
- Déclarations de fonctions, types de retour et valeurs par défaut des paramètres.
void: un type de retour qui déclare qu’une fonction ne renvoie rien d’utile.- Arguments nommés : appeler une fonction par le nom des paramètres plutôt que par leur position.
- Passage par référence et passage par valeur : si une fonction peut ou non modifier la variable de l’appelant.
- Fonctions anonymes et closures : les fonctions comme valeurs, avec capture de variables via
use, au chapitre 15. - Fonctions fléchées (
fn) : des closures à une seule expression, avec capture implicite de la portée englobante. - Syntaxe des callables de première classe
foo(...): transformer la référence à une fonction ou une méthode nommée en véritableClosure. - Générateurs et
yield: des fonctions qui produisent leurs valeurs paresseusement, une à la fois, au chapitre 15.
Classes et objets
- Déclarations de classes,
new,instanceof,clone: le vocabulaire de base de la création d’objets. - Visibilité (
public,protected,private) : contrôler l’accès aux propriétés et aux méthodes. - Promotion de propriétés dans le constructeur et propriétés
readonly: construction raccourcie et propriétés à écriture unique, au chapitre 5. - Propriétés typées : déclarer le type d’une propriété dès le départ.
- Propriétés et méthodes
static, variables statiques et liaison statique tardive : les différents travaux, sans rapport entre eux, du mot-cléstatic. - Héritage,
extendsetparent::: bâtir une classe sur une autre, au chapitre 17. - Classes abstraites et méthodes abstraites : des classes de base qu’on ne peut pas instancier seules.
- Interfaces et traits : contrat partagé contre implémentation partagée, au chapitre 11.
- Constructeur (
__construct), destructeur (__destruct) et les autres méthodes magiques :__toString(),__get()/__set(),__call(), traitées au chapitre 17. - Génériques, via les docblocks : PHP n’a pas de génériques natifs, alors les outils d’analyse statique lisent le type dans un commentaire, comme l’explique le chapitre 11.
Enums
- Enums : cas purs et cas adossés à une valeur, au chapitre 6.
Espaces de noms et autoloading
- Espaces de noms et imports
use: organiser et importer des noms, au chapitre 7. - Autoloading : charger les fichiers de classes à la demande plutôt qu’avec une pile de
require. - PSR-4 : le standard d’autoloading que Composer implémente, traité au chapitre 7. Pas encore dans le dictionnaire, seulement mentionné en passant.
Gestion des erreurs
Exception,Error,Throwable: les deux hiérarchies parallèles de ce qui peut être levé en PHP, au chapitre 9.try/catch/finallyetDivisionByZeroError: attraper et traiter un échec.RuntimeException: l’une des sous-classes d’exception fournies par PHP, utilisée comme base dans le projet en ligne de commande à partir du chapitre 14.- Classes d’exception personnalisées (
extends Exception) : un idiome courant, mais pas encore d’entrée dédiée dans le dictionnaire.
Web et bases de données
- Superglobales,
$_GET,$_POSTet$_SERVER: lire les données d’une requête web, au chapitre 10. htmlspecialchars()et XSS : échapper la sortie pour empêcher le balisage d’un attaquant de s’exécuter dans le navigateur de quelqu’un d’autre, au chapitre 10.- CSRF : les requêtes intersites forgées, nommées mais pas contrées dans ce livre, au chapitre 10.
- PDO,
PDOExceptionet SQLite3 : une façon uniforme, dans un simple fichier, de parler à une base de données, au chapitre 10. - Requêtes préparées et injection SQL : séparer la structure d’une requête de ses valeurs pour empêcher un attaquant de la réécrire.
Débogage
var_dump(),print_r()etvar_export(): afficher la structure d’une valeur (et, pourvar_dump(), son type) quand on traque un bug, au chapitre 13.- Xdebug : un débogueur pas à pas et un profileur, qui suspend l’exécution sur un point d’arrêt au lieu de deviner où afficher, au chapitre 13.
- Profilage : mesurer où un script passe vraiment son temps, l’un des autres métiers de Xdebug.
Concurrence
pcntl: l’extension derrière la création et le contrôle de processus séparés au niveau du système.
Reflection et attributs
- Reflection : inspecter classes, méthodes, propriétés et attributs à l’exécution, au chapitre 20.
- Constantes magiques (
__CLASS__,__FUNCTION__,__METHOD__,__LINE__,__FILE__) : des constantes résolues à la compilation qui décrivent l’emplacement du code lui-même. - Attributs
#[...]: des métadonnées structurées attachées au code et relues via Reflection, au chapitre 20.
Interfaces natives
Countable: fait fonctionnercount()sur un objet à vous.ArrayAccess: autorise l’accès entre crochets sur un objet à vous.IteratoretIteratorAggregate: les deux façons de rendre un objet parcourable parforeach, au chapitre 20.
En vrac
global: ramener une variable depuis la portée globale.- Copie à l’écriture : pourquoi passer un tableau par valeur ne coûte rien tant que personne n’écrit dedans, au chapitre 4.
- Ramasse-miettes : comment PHP récupère la mémoire des objets que plus personne ne référence.
assert(): une vérification de bon sens en phase de développement, au chapitre 12.- PHPUnit : le framework de test utilisé dans toute la seconde moitié du livre.
getenv()et$_ENV: lire les variables d’environnement, au chapitre 14.fwrite(STDERR, ...): écrire sur la sortie d’erreur plutôt que sur la sortie standard.- Mise en tampon de la sortie : capturer la sortie générée dans un tampon au lieu de l’envoyer immédiatement.
register_shutdown_function(): un callback que PHP garantit d’exécuter à la fin d’un script, au chapitre 21.$thisetSTDIN: tous deux utilisés en permanence à partir du chapitre 2, aucun n’a encore son entrée dans le dictionnaire.random_int(): la fonction de PHP pour tirer un entier aléatoire de qualité cryptographique, pas encore listée non plus.
Les trous méritent autant d’attention que les liens. Quelques éléments sur lesquels ce livre s’appuie lourdement, $this, STDIN, PSR-4, les classes d’exception personnalisées, n’ont pas encore d’entrée dans le dictionnaire. Si vous vous surprenez à en expliquer un à quelqu’un, cette explication est déjà l’essentiel d’une entrée de dictionnaire.