PHP 7.4 pourrait sortir en décembre 2019. Cette page sera mise à jour régulièrement.
<strong>Preloading</strong>
préchargement rfc
Preloading
(préchargement) est un ajout incroyable au noyau PHP, il peut apporter quelques améliorations majeures des performances.
En bref : si vous utilisez un framework aujourd'hui, ses fichiers doivent être chargés et recompilés à chaque requête. Le préchargement permet au serveur de charger les fichiers PHP en mémoire au démarrage et de les rendre disponibles en permanence pour toutes les requêtes ultérieures.
L'augmentation des performances a bien sûr un prix : si la source des fichiers préchargés change, le serveur doit être redémarré.
<code><strong>Typed properties</strong>
Propriétés typées rfc
class A { public string $name; public Foo $foo; }Mise à jour : les propriétés typées ont été fusionnées jusqu'à présent, les confirmant pour PHP 7.4.
<strong>Improved type variance</strong>
<strong>Variation de type améliorée</strong>
(variance de type améliorée) J'ai déjà écrit sur le système de types de PHP, donc c'est agréable de voir quelques améliorations venir au noyau PHP.
Les différences de types sont un sujet digne de son propre article de blog
En bref : vous pourrez utiliser les
types de retourcovariant
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } }
contravariant
Mise à jour : la RFC est actuellement en phase de vote, mais il semble qu'elle sera adoptée sans aucun problème.
class A { public function contraVariantArguments(ChildType $type) { /* … */ } } class B extends A { public function contraVariantArguments(ParentType $type) { /* … */ } }
<p>Interface de fonction étrangère</p>
(Interface de fonction étrangère)<strong>Foreign Function Interface</strong>
rfcInterface de fonction étrangère, FFI, en abrégé, permet d'appeler du code C depuis l'espace utilisateur. Cela signifie que les extensions PHP peuvent être écrites en PHP pur.
Il est important de noter qu’il s’agit d’un sujet complexe. Vous avez toujours besoin de connaissances en C pour utiliser correctement cette fonctionnalité.
<strong>Null</strong>
Opérateur d'affectation de fusion rfc
$data['date'] = $data['date'] ?? new DateTime();Vous pouvez faire ceci :
$data['date'] ??= new DateTime();Mise à jour : Cette fonctionnalité est désormais fusionnée dans PHP 7.4.
Sérialisation d'objets personnalisés rfc
Cette RFC ajoute deux nouvelles méthodes magiques : et __serialize
. Les différences entre ces méthodes et les méthodes __unserialize
et __sleep
sont discutées dans la RFC. __wakeup
<p>Plus de marges étroites<code><strong>No more narrow margins</strong>
rfcTechniquement, ce n'est pas un produit lié à PHP 7.4 Mis à jour, mais c'est définitivement mérite d'être mentionné. Les règles de vote des RFC ont changé : elles nécessitent toujours une majorité des 2/3 pour être adoptées.
<code><strong>Reflection for references</strong>
Réflexion pour les références rfc
ReflectionReference
PHP 7.4 a ajouté la classe
PEAR
Non activé par défaut
Hashing
Password Hash () Registre rfc
OBSERVÉ<strong>ext / wwdx</strong>
<a href="https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx" target="_blank">ext/wwdx</a>
Ce format d'échange de données n'a jamais été disponible Standardisées, ses extensions sont désormais obsolètes.
Mise à niveau des modifications rétrocompatiblesLors de la mise à niveau d'une version PHP, vous devez toujours consulter la
Documentation complète de mise à niveau.
Voici quelques-uns des changements rétrocompatibles mis en évidence : parent::
• L'appel de var_dump sur une instance DateTime
ou datetimevariable
ne laissera plus de propriétés accessibles sur l'objet.
• openssl_random_pseudo_bytes
lèvera une exception en cas d'erreur.
• Tenter de sérialiser une instance PDO
ou PDOStatement
générera une exception au lieu de PDOException
.
• L'appel de ArrayObject
sur une instance de get_object_vars()
renverra les propriétés du ArrayObject
lui-même, plutôt que la valeur du tableau ou de l'objet encapsulé. Notez que les conversions (de tableau) ne sont pas affectées.
Traduit de : https://stitcher.io/blog/new-in-php-74#reflection-for-references-rfc
Recommandations associées :
《 La différence de sécurité entre PHP7 et PHP5 (exemple)》
《Changements apportés par l'arbre de syntaxe abstraite (AST) de PHP7》
《Principe d'exécution du langage PHP7 (analyse du code source PHP7)》