@allpeople / site

Traduction d'articles Us/Fr sur le langage PHP.
Articles disponibles :
Apprentissage du PHP par l'exemple : Mémo PHP

Version PHP :
Version Symfony :

PHP 8.1


Cette version sortie il y a 7 mois apporte pleine de nouvelles fonctionnalités et de modernisation : toujours plus de typage.
Et donc il est important de préparer le terrain en supprimant les incompatibilités et en résolvant les dépréciations en attente.

Quelques nouveautés :

    - Support du format AVIF :

C'est un nouveau codec open source de compression d'image et de vidéo plus efficaces que le format JPEG, c'est à dire une meilleure compression pour une meilleure qualité d'image.
Plus d'info : https://php.watch/versions/8.1/gd-avif


    - Fonction fsync et fdatasync :

PHP a déjà la fonction fflush qui vide les données potentiellement mises en mémoire tampon vers l'OS sous-jacent. La fonction fflush est souvent utilisée après les opérations d'écriture (appels fwrite), pour s'assurer que les tampons internes de PHP sont vidés de l'OS.
Les nouvelles fonctions fsync et fdatasync sont similaires à fflush, mais elles demandent également à l'OS de vider les tampons d'écriture sur le stockage physique.
Plus d'info : https://php.watch/versions/8.1/fsync-fdatasync


    - De nouvelles fonctions permet de crypter et décrypter des données sans authentification avec la librairie Sodium XChaCha20. "sans authentification" : à comprendre en "mode détaché".
Plus d'info : https://php.watch/versions/8.1/Sodium-XChaCha20-functions


    - Les Fibers :

Cette nouvelle fonctionnalité de PHP81 permet de gérer des thread enfant non concurrent dans le traitement séquentiel de PHP (thread parent).
Si vous avez déjà utilisé le composant process de Symfony, vous savez que cette nouvelle fonctionnalité peut être appréciable.
Une Fiber est un bloc de code qui maintient sa propre pile (variables et état) qui peut être démarrée, suspendue ou terminée de manière coopératif par le code principal et la fiber.
Attention, cette exécution concurrente ne veut pas dire exécution simultanée.
Pour mieux comprendre : voir le diagramme sur https://php.watch/versions/8.1/Fibers


    - Propriété Readonly :

Avec un attribut de classe Readonly, le système lève une Exception "Not allowed" si on tente de changer la valeur de l'attribut.
Il a été estimé que 40% des attributs peuvent être en readonly.


    - Enum :

La nouveauté majeure de cette version PHP 8.1 est les énumérations. Est construit un peu comme les traits, qui est une pseudo-classe typée autrement, comme en PHP 5 où les objets était des array.
Les Enum permettent de renforcer le typage du langage et de rendre plus lisible le code.
Plus d'info : https://php.watch/versions/8.1/enums

Note : très efficace avec les énumérateurs, l'expression match (nouveauté PHP80) améliore de plusieurs façon la syntaxe switch/case.
Plus d'info : https://php.watch/versions/8.0/match-expression


    - Autres : https://php.watch/versions/8.1 dont le type de retour "never", à différencier de void, car vraiment sans retour (levée d'une exception ou die/exist).


2022