C - Vocabulaire
Cette annexe définit, en une ou deux phrases chacun, les mots qui reviennent dans les conversations PHP et rarement ailleurs.
SAPI. Server API : la couche qui relie lâinterprĂ©teur Ă ce qui lâexĂ©cute. La ligne de commande, PHP-FPM, mod_php et les runtimes embarquĂ©s sont tous des SAPI au-dessus du mĂȘme moteur.
CLI. La SAPI en ligne de commande, invoquĂ©e par php file.php. Elle nâa par dĂ©faut ni limite de temps dâexĂ©cution ni limite de mĂ©moire, contrairement aux SAPI web.
FPM. FastCGI Process Manager : un pool de processus PHP qui attendent les requĂȘtes derriĂšre un serveur web. La façon standard de servir PHP.
FastCGI. Le protocole par lequel le serveur web transmet une requĂȘte Ă FPM et relit la rĂ©ponse.
mod_php. Le module Apache qui embarque PHP dans le processus du serveur web lui-mĂȘme. Plus ancien que FPM, et toujours prĂ©sent.
OPcache. Le cache de bytecode. Les fichiers compilĂ©s restent en mĂ©moire partagĂ©e, et la requĂȘte suivante sâĂ©pargne lâanalyse. ActivĂ© dans toute installation sĂ©rieuse.
JIT. Compilation Ă la volĂ©e du code chaud en code machine, Ă lâintĂ©rieur dâOPcache, depuis 8.0. Aide les scripts gourmands en CPU ; change peu de chose pour le trafic web ordinaire.
Preloading (prĂ©chargement). Une option dâOPcache qui compile et lie un ensemble de fichiers une fois au dĂ©marrage du serveur, pour que chaque requĂȘte commence avec eux dĂ©jĂ chargĂ©s.
APCu. Un cache mĂ©moire partagĂ© entre les processus PHP dâune mĂȘme machine. Pour les valeurs calculĂ©es une fois et lues souvent, quand un stockage externe serait disproportionnĂ©.
Extension. Un module C compilé qui ajoute des fonctions ou des classes à PHP : pdo_mysql, intl, mbstring, xdebug. php -m liste celles qui sont chargées.
PECL. Le dépÎt historique des extensions non livrées avec PHP, avec son propre installeur.
PIE. Lâinstalleur dâextensions plus rĂ©cent, dans lâesprit de Composer, appelĂ© Ă succĂ©der au circuit PECL.
ZTS et NTS. Les builds thread-safe et non-thread-safe de lâinterprĂ©teur. NTS est le dĂ©faut et celui quâutilise FPM ; ZTS existe pour les rares SAPI multithreadĂ©es et lâextension parallel.
php.ini. Le fichier de configuration. La CLI et FPM en lisent des différents, ce qui explique la plupart des mystÚres du type « ça marche dans le terminal ».
Composer. Le gestionnaire de paquets. Lit composer.json, Ă©crit composer.lock, remplit vendor/, gĂ©nĂšre lâautoloader.
Packagist. Le registre public de paquets oĂč Composer sâapprovisionne.
vendor. Le dossier oĂč Composer installe les paquets, quâon ne modifie jamais Ă la main et quâon ne commite pas.
Autoload. Le mĂ©canisme qui charge le fichier dâune classe Ă sa premiĂšre utilisation, si bien quâon nâĂ©crit plus jamais une ligne require Ă la main.
PSR-4. La correspondance standard entre espace de noms et dossier que suivent les autoloaders : App\Billing\Invoice vit dans src/Billing/Invoice.php.
PHP-FIG. Framework Interoperability Group : lâorganisme qui publie les PSR et le style de code.
PSR. PHP Standards Recommendation : une interface ou une convention numĂ©rotĂ©e (PSR-3 pour les logs, PSR-7 pour les messages HTTP, PSR-15 pour les middlewares) sur laquelle les bibliothĂšques sâaccordent afin dâĂȘtre interchangeables.
PER Coding Style. Le standard de style de code actuel du FIG, successeur de PSR-12. Ce que les formateurs font respecter.
RFC. Request for Comments : la proposition publique par laquelle passe tout changement du langage avant un vote des dĂ©veloppeurs du cĆur.
PHP Foundation. Lâorganisation Ă but non lucratif qui, depuis 2021, salarie des dĂ©veloppeurs du cĆur pour maintenir et faire avancer lâinterprĂ©teur.
php-src. Le dĂ©pĂŽt source de lâinterprĂ©teur lui-mĂȘme, Ă©crit en C.
Zend Engine. Le cĆur de lâinterprĂ©teur : le compilateur et lâexĂ©cuteur. Le nom survit dans quelques rĂ©glages et messages dâerreur.
Superglobal (superglobale). Un tableau intégré au langage, visible dans toutes les portées : $_GET, $_POST, $_SERVER, $_COOKIE, $_FILES, $_SESSION, $_ENV.
Docblock. Un commentaire /** ... */ au-dessus dâun symbole, portant des annotations @param et @return que lisent les Ă©diteurs et les analyseurs statiques. Câest lĂ que vivent les gĂ©nĂ©riques.
Attribute (attribut). Des métadonnées structurées attachées à une classe, une méthode, une propriété ou un paramÚtre avec #[...], lues par réflexion. Ce que les annotations étaient en Java.
Trait. Un bloc de méthodes et de propriétés copié dans toute classe qui le use. De la réutilisation horizontale sans héritage.
Enum (énumération). Un type avec un ensemble fixe de cas nommés, éventuellement adossés à un entier ou une chaßne, avec méthodes et interfaces. Depuis 8.1.
Fiber. Une coroutine Ă pile qui peut se suspendre et reprendre depuis nâimporte quel point de sa pile dâappels. La primitive sur laquelle sâappuient les bibliothĂšques asynchrones ; pas quelque chose que le code applicatif pilote directement.
Generator (gĂ©nĂ©rateur). Une fonction qui produit des valeurs une Ă une avec yield et conserve son Ă©tat entre les appels. De lâitĂ©ration paresseuse sans construire de tableau.
SPL. Standard PHP Library : lâensemble intĂ©grĂ© de structures de donnĂ©es, dâitĂ©rateurs, dâexceptions et dâinterfaces tels que ArrayIterator, SplQueue, Countable, RuntimeException.
PDO. PHP Data Objects : lâabstraction de base de donnĂ©es avec une seule API pour tous les pilotes, requĂȘtes prĂ©parĂ©es comprises.
mbstring. Lâextension de chaĂźnes multi-octets. mb_strlen, mb_substr et leurs semblables comptent des caractĂšres lĂ oĂč les fonctions ordinaires comptent des octets.
intl. Lâextension dâinternationalisation : collation, formatage des nombres et des dates, normalisation Unicode, au-dessus de la bibliothĂšque ICU.
Xdebug. Le débogueur pas à pas et profileur, réservé au développement.
PHPUnit. Le framework de test de style xUnit avec lequel la plupart des tests PHP sont écrits.
Pest. Un framework de test Ă la syntaxe describe et expect, qui tourne sur le moteur de PHPUnit.
PHPStan. Un analyseur statique qui trouve les erreurs de type et le code impossible sans lâexĂ©cuter, avec des niveaux de 0 Ă 10.
Psalm. Lâautre analyseur statique, avec des niveaux de 8 Ă 1 et un accent sur la soliditĂ© des types et lâanalyse de souillure (taint analysis).
Rector. Un outil de refactoring automatisé qui réécrit le code vers une version plus récente de PHP ou une API de bibliothÚque plus récente.
phpt. Le format des fichiers de test de lâinterprĂ©teur lui-mĂȘme, dans php-src. Vous le croisez si vous contribuez Ă PHP ou lisez ses rapports de bug.
strict_types. La déclaration par fichier declare(strict_types=1); qui fait lever une exception, au lieu de convertir, sur les incompatibilités de types scalaires dans les appels faits depuis ce fichier.
Copy-on-write (copie Ă lâĂ©criture). Lâastuce du moteur qui rend lâaffectation de tableaux bon marchĂ© : la copie partage la mĂ©moire de lâoriginal jusquâĂ ce que lâun des deux soit modifiĂ©.
Late static binding (liaison statique tardive). static:: qui se rĂ©sout vers la classe sur laquelle lâappel a Ă©tĂ© fait, pas celle oĂč la mĂ©thode est Ă©crite. self:: est lâautre.
Magic method (mĂ©thode magique). Une mĂ©thode au nom rĂ©servĂ© Ă double tiret bas que le moteur appelle de lui-mĂȘme : __construct, __toString, __get, __call, __clone, __invoke.