PHP est un langage de script généraliste largement utilisé, particulièrement adapté au développement Web et pouvant être intégré au HTML.
PHP est un langage de script open source côté serveur à usage général, initialement conçu pour le développement Web afin de produire des pages Web dynamiques. Il s'agit de l'un des premiers langages de script côté serveur développés à être intégré dans un document source HTML plutôt que d'appeler un fichier externe pour traiter les données. Le code est interprété par un serveur Web avec un module processeur PHP qui génère la page Web résultante. Il a également évolué pour inclure une fonctionnalité d'interface de ligne de commande et peut être utilisé dans des applications graphiques autonomes.
Si vous débutez avec PHP et souhaitez avoir une idée de son fonctionnement, essayez le didacticiel d'introduction.
Après cela, consultez le manuel en ligne.
Quoi de neuf
PHP 8.4 est une mise à jour majeure du langage PHP. Il contient de nombreuses nouvelles fonctionnalités, telles que des hooks de propriétés, une visibilité asymétrique, une API DOM mise à jour, des améliorations de performances, des corrections de bogues et un nettoyage général.
Cette version marque la dernière version mineure du langage PHP.
PHP 8.4 est livré avec de nombreuses améliorations et nouvelles fonctionnalités telles que :
- Crochets de propriété
- Visibilité asymétrique des propriétés
- Objets paresseux
- Sous-classes spécifiques au pilote PDO
- Type d'objet BCMath
- Et bien plus encore…
BCMath :
- (RFC) Ajoutez bcfloor, bcceil et bcround à BCMath.
- Améliorer les performances.
- Ajustez le paramètre $mode de bcround() pour accepter uniquement l'énumération RoundingMode.
- Correction de LONG_MAX dans BCMath ext.
- Correction du div bcdiv() par un.
- (RFC) Prise en charge des types d'objets dans BCMath.
- Amélioration des performances de bcpow().
- ext/bcmath : Vérifiez le débordement d'échelle.
- (RFC) ext/bcmath : Ajout de bcdivmod.
- Correction GH-15968 (Éviter de convertir des objets en chaînes dans les calculs des opérateurs).
- Correction du bug GH-16265 (Ajout d'un cas de retour anticipé lorsque le résultat est 0) (Saki Takamachi).
- Correction du bug GH-16262 (Correction d'un bug où size_t dépasse) (Saki Takamachi).
- Correction de GH-16236 (Correction d'un bug dans BcMath\Number::pow() et bcpow() lors de l'augmentation des puissances négatives de 0) (Saki Takamachi).
Cœur:
- Ajout de l'implémentation de zend_call_stack_get pour NetBSD, DragonFlyBSD, Solaris et Haiku.
- Activation des vérifications ifunc sur FreeBSD à partir des versions 12.x.
- Modification du type des constantes PHP_DEBUG et PHP_ZTS en bool.
- Correction du bug GH-13142 (le nom de la variable non définie est raccourci lorsqu'il contient \0).
- Correction du bug GH-13178 (positions de l'itérateur incorrectes lors de la conversion d'un tableau compressé en tableau haché).
- Correction de la construction de fibre Zend pour le mode par défaut de Solaris (32 bits).
- Correction de la taille de la pile d'appels Zend pour macOS/arm64.
- Ajout du support pour les minuteries d'exécution Zend Max sur FreeBSD.
- Assurez-vous que la pile de fibres n’est pas soutenue par THP.
- Implémentez GH-13609 (vidage de l'objet encapsulé dans la classe WeakReference).
- Ajout du support de l'assemblage d'arc sparc64 pour la fibre Zend.
- Correction du GH-13581 : aucun espace disponible pour TLS sur NetBSD.
- Ajout de la prise en charge de la fibre Sys-V Loongarch64.
- Noms de fermeture ajustés pour inclure le nom de la fonction parent.
- Améliorez le caractère aléatoire des noms de fichiers téléchargés et des fichiers créés par tempnam().
- Ajout des rappels gc et shutdown aux gestionnaires personnalisés zend_mm.
- Correction du bug GH-14650 (Calculer la taille des pages avant d'allouer de la mémoire).
- Correction du bug GH-11928 (Le –enable-re2c-cgoto n'ajoute pas l'indicateur -g).
- Ajout de l'attribut #(\Deprecated).
- Correction de GH-11389 (Autoriser la suspension de fibres dans les destructeurs).
- Correction du bug GH-14801 (Correction de la version pour armv7).
- Hooks de propriété implémentés RFC.
- Correction de GH-14978 (version phpize de l'extension xmlreader).
- Générez une exception d'erreur en cas de récursion lors de la comparaison, plutôt qu'une erreur fatale.
- Ajout de l'inclusion cstddef manquante pour les versions C++.
- Mise à jour des scripts du système de construction config.guess au 2024-07-27 et config.sub au 2024-05-27.
- Correction du bug GH-15240 (Récursivité infinie dans le hook de trait).
- Correction du bug GH-15140 (vérification de variance manquante pour un ensemble abstrait de type asymétrique).
- Correction du bug GH-15181 (le gestionnaire de sortie désactivé est à nouveau vidé).
- Passer E_USER_ERROR à trigger_error() est désormais obsolète.
- Correction du bug GH-15292 (la détection dynamique AVX est interrompue pour MSVC).
- L'utilisation de « _ » comme nom de classe est désormais obsolète.
- Quitter un espace de noms efface désormais les symboles vus.
- Les constructions du langage de sortie (et de mort) se comportent désormais davantage comme une fonction. Ils peuvent être transmis à des callables appréciés, sont affectés par l'instruction de déclaration strict_types et effectuent désormais les coercitions de type habituelles au lieu de convertir une valeur non entière en chaîne. En tant que tel, transmettre des types non valides à exit/die peut désormais entraîner la levée d'une TypeError.
- Correction du bug GH-15438 (les hooks sur les propriétés promues par le constructeur sans visibilité sont ignorés).
- Correction du bug GH-15419 (vérification d'incompatibilité en lecture seule + hook manquante pour les classes en lecture seule).
- Correction du bug GH-15187 (divers problèmes d'itérateur d'objet accroché).
- Correction du bug GH-15456 (Crash dans get_class_vars() sur les propriétés virtuelles).
- Correction du bug GH-15501 (Windows HAVE_
_H macros définies à 1 ou non définies). - Implémentation d'une visibilité asymétrique pour les propriétés.
- Correction du bug GH-15644 (la visibilité asymétrique ne fonctionne pas avec les crochets).
- Implémentation des objets paresseux RFC.
- Correction du bug GH-15686 (Création d'icônes partagées avec une bibliothèque d'icônes externe).
- Correction d'une erreur manquante lors de l'ajout d'une visibilité asymétrique à une propriété virtuelle unilatérale.
- Correction du bug GH-15693 (inclusion inutile dans le binaire main.c bloats).
- Correction du bug GH-15731 (la validation AllowDynamicProperties devrait générer une erreur sur les énumérations).
- Correction du bug GH-16040 (Utilisation après libération d'un objet libéré dans le hook).
- Correction du bug GH-16026 (Réutilisation de la fibre dtor lors de l'arrêt).
- Correction du bug GH-15999 (échec de l'assertion zend_std_write_property() avec des objets paresseux).
- Correction du bug GH-15960 (cas extrêmes Foreach avec des objets paresseux).
- Correction du bug GH-16185 (divers problèmes d'itérateur d'objet accroché).
- Correction du bug OSS-Fuzz # 371445205 (Heap-use-after-free dans attr_free).
- Correction d'une erreur manquante lors de l'ajout d'une visibilité asymétrique aux propriétés statiques.
- Correction du bug OSS-Fuzz #71407 (ÉCRITURE de déréférencement nul dans zend_lazy_object_clone).
- Correction du bug GH-16574 (messages d'erreur incorrects « méthode non définie »).
- Correction du bug GH-16577 (fuites EG(strtod_state).freelist avec opcache.preload).
- Correction du bug GH-16615 (échec d'assertion dans zend_std_read_property).
- Correction du bug GH-16342 (Ajout de ReflectionProperty::isLazy()).
- Correction du bug GH-16725 (vérification d'accès incorrecte pour les accessoires non accrochés dans l'itérateur d'objet accroché).
Boucle:
- La constante CURLOPT_BINARYTRANSFER est obsolète.
- La version requise de libcurl a été remplacée par 7.61.0.
- Ajout de la clé feature_list à la valeur de retour curl_version().
- Ajout des constantes CURL_HTTP_VERSION_3 (libcurl 7.66) et CURL_HTTP_VERSION_3ONLY (libcurl 7.88) comme options pour CURLOPT_HTTP_VERSION (Ayesh Karunaratne)
- Ajout de CURLOPT_TCP_KEEPCNT pour définir le nombre de sondes à envoyer avant d'abandonner la connexion.
- Ajout de l'option CURLOPT_PREREQFUNCTION Curl pour définir un rappel personnalisé après l'établissement de la connexion, mais avant l'exécution de la demande.
- Ajout de CURLOPT_SERVER_RESPONSE_TIMEOUT, anciennement connu sous le nom de CURLOPT_FTP_RESPONSE_TIMEOUT.
- L'option CURLOPT_DNS_USE_GLOBAL_CACHE est désormais ignorée en silence.
- Ajout de CURLOPT_DEBUGFUNCTION comme option Curl.
- Correction du bug GH-16359 (crash avec curl_setopt* CURLOPT_WRITEFUNCTION sans rappel nul).
- Correction du bug GH-16723 (problèmes CURLMOPT_PUSHFUNCTION).
Date:
- Ajout de DateTime(Immutable)::createFromTimestamp.
- Ajout de DateTime(Immutable)::(get|set)Microsecond.
- Les constantes SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING et SUNFUNCS_RET_DOUBLE sont désormais obsolètes.
- Correction du bug GH-13773 (DatePeriod ne prenant pas en compte les microsecondes pour la date de fin).
Administrateur de base de données :
- Passer null ou false à dba_key_split() est obsolète.
Débogage :
- Correction du bug GH-15923 (GDB : exception Python
: les exceptions doivent dériver de BaseException).
DOMAINE :
- Ajout de DOMNode::compareDocumentPosition().
- Implémentez #53655 (Amélioration de la vitesse de DOMNode::C14N() sur les documents XML volumineux).
- Correction de l'attribut de clonage avec l'espace de noms disparaissant.
- Implémentez le RFC d’analyse et de sérialisation DOM HTML5.
- Fix DOMElement->prefix avec une chaîne vide crée un faux préfixe.
- Gérez le MOO de manière plus cohérente.
- Implémentation de la RFC « Améliorer les rappels dans ext/dom et ext/xsl ».
- Ajout de la méthode statique DOMXPath::quote().
- Implémentation de la RFC de conformité aux spécifications ext/dom opt-in.
- Correction du bug n° 79701 (getElementById ne fonctionne pas correctement avec les définitions en double).
- Implémentation de la RFC « Nouvelles fonctionnalités ext-dom dans PHP 8.4 ».
- Correction de GH-14698 (segfault lors du déréférencement du nœud DOM).
- Améliorer la prise en charge des éléments de modèle.
- Correction d'une fuite de trampoline dans les callables XPath.
- Lancez au lieu d'échouer silencieusement lors de la création d'un nœud de texte trop long dans (DOM)ParentNode et (DOM)ChildNode.
- Correction du bug GH-15192 (erreur de segmentation dans l'extension dom (html5_serializer)).
- Constante DOM_PHP_ERR obsolète.
- Suppression de DOMImplementation::getFeature().
- Correction du bug GH-15331 (le test Element::$substitutedNodeValue a échoué).
- Correction du bug GH-15570 (erreur de segmentation (pointeur nul d'accès) dans ext/dom/html5_serializer.c).
- Correction du bug GH-13988 (le stockage de DOMElement consomme 4 fois plus de mémoire dans PHP 8.1 que dans PHP 8.0).
- Correction des errata du sérialiseur XML : la sérialisation xmlns= » » doit être autorisée.
- Correction du bug GH-15910 (échec d'assertion dans ext/dom/element.c).
- Correction des propriétés DOM non définies.
- Correction du bug GH-16190 (l'utilisation de la réflexion pour appeler Dom\Node::__construct provoque un échec d'assertion).
- Correction des cas extrêmes dans le décodage de l'analyse DOM.
- Correction du bug GH-16465 (débordement de tampon tas dans DOMNode->getElementByTagName).
- Correction du bug GH-16594 (échec d'assertion dans DOM -> avant).
Lisez les notes de version complètes ici.