Nouvelles fonctionnalités
 
  Déclarations du type scalaire
  
   Les déclarations de type
   scalaire viennent en deux modes : coercitive (par défaut) ou stricte. Les types de paramètres
   suivants peuvent être renforcés (soit coercitif soit strict) : les chaînes de caractères
   (string), les entiers (int),
   les décimaux (float) et les valeurs booléennes (bool).
   Ils complémentent les autres types introduits dans PHP 5 : les noms des classes, les interfaces,
   les tableaux (array) et les fonctions appelables (callable).
  
  
  
   Pour activer le mode strict, une seule directive declare doit être placée
   en haut du fichier. Ceci signifie que le mode strict de déclaration du type
   scalaire est configurée par fichier. La directive n'affecte pas seulement la
   déclaration des paramètres mais aussi le type de retour de la fonction (voir
   les déclarations du type de retour
   dans les fonctions PHP et celles issues des extensions).
  
  
   Une documentation complète et des exemples de déclarations du type scalaire
   peuvent être trouvés dans la référence : Déclarations de type.
  
  
 
  Déclarations du type de retour
  
   PHP 7 ajoute un support pour  les
   déclarations du type de retour.
   Similaires aux 
   déclarations du type d'argument,
   les déclarations du type de retour spécifient le type de la valeur qui sera retournée par la fonction.
   Les mêmes 
   types
   qui sont disponibles pour les déclarations du type de retour sont disponibles pour les déclarations
   du type d'argument.
  
  
  
   Une documentation complète et des exemples de déclarations du type de retour
   peuvent être trouvés dans la référence : Déclarations du type de retour.
  
  
 
  L'opérateur Null coalescent
  
   L'opérateur Null coalescent (??) a été ajouté comme un sucre 
   syntaxique pour les cas de besoin les plus communs d'utiliser une troisième conjonction 
   avec la fonction isset(). Il retourne le premier opérande s'il existe 
   et n'a pas une valeur null; et retourne le second opérande sinon.
  
  
  
  
 
  L'opérateur Spaceship
  
   L'opérateur Spaceship est utilisé pour comparer deux expressions. 
   Il retourne -1, 0 ou 1 quand $a est respectivement inférieur, 
   égal ou supérieur à $b. Les comparaisons sont effectuées 
   selon 
   les règles de comparaison de types 
   habituelles de PHP.
  
  
  
  
 
  Les tableaux constants à l'aide de define()
  
   Les tableaux (Array) constants peuvent maintenant être définis 
   avec la fonction define(). Dans PHP 5.6, ils pouvaient 
   être définis seulement avec const.
  
  
  
 
  Les classes anonymes
  
   La prise en charge des classes anonymes a été ajoutée à travers 
   l'instanciation new class. Celle-ci peut être utilisée 
   au lieu de définir toute une classe pour des objets jetables :
  
  
  
   La documentation complète peut être trouvée dans 
   la référence des classes anonymes.
  
  
 
  Syntaxe d’échappement du point de code Unicode
  
   Cela prend un point de code Unicode sous forme hexadécimale, dans une chaîne 
   entre doubles guillemets ou une syntaxe heredoc, pour le convertir 
   en UTF-8. N’importe quel point de code valide est accepté, 
   les zéros en début de chaîne étant facultatifs.
  
  
  
 
  
  
   La méthode Closure::call() est devenue plus performante. 
   Une façon plus courte de lier temporairement une fermeture à la portée d'un 
   objet et l'invoquer.
  
  
  
 
  
  
   Cette fonctionnalité vise à garantir une meilleure sécurité lorsque 
   la désérialisation d’objets est effectuée avec des données non fiables. 
   Elle empêche les injections de code possible en permettant au développeur 
   de whitelister les classes qui peuvent être désérialisées.
  
  
  
 
  
  
   La nouvelle classe IntlChar cherche à exposer 
   la fonctionnalité ICU en plus. La classe elle-même définit un nombre de méthodes 
   statiques et de constantes qui peuvent être utilisées pour manipuler les 
   caractères unicode.
  
  
  
   Pour utiliser cette classe, vous devez installer l'extension 
   Intl.
  
  
 
  Les attentes
  
   Les attentes sont 
   une amélioration rétro-compatible apportée à l'ancienne fonction
   assert(). Ils offrent des assertions à très faible
   coût dans le code de production et permettent de lever des exceptions 
   personnalisées lorsque l’assertion échoue.
  
  
   Alors que l'ancienne API continue à être maintenue pour des raisons de
   compatibilité, la fonction assert() est maintenant 
   une construction de language, permettant au premier paramètre d'être 
   une expression plutôt qu'un string à évaluer ou un 
   bool à tester.
  
  
  
   On trouvera plus de détails sur cette fonctionnalité, y compris la façon de la configurer
   dans les environnements de développement et de production, dans 
   la section attentes 
   dans la référence de la fonction assert().
  
  
 
  Grouper les déclarations use
  
   Les classes, les fonctions et les constantes importées à partir du même namespace
   peuvent être groupées maintenant dans une seule instruction use.
  
  
  
 
  Expressions de retour générateur
  
   Cette fonction se base sur la fonctionnalité de générateur introduite dans PHP 5.5. 
   Elle permet d'utiliser une instruction return dans un générateur 
   pour retourner une expression finale (le retour par référence n'est pas autorisé). 
   Cette valeur peut être extraite en utilisant la nouvelle méthode  
   Generator::getReturn(), qui ne peut être utilisée que lorsque 
   le générateur a fini de rendre les valeurs.
  
  
  
   C'est très pratique d'être capable de renvoyer explicitement une valeur finale 
   d'un générateur. Car cela permet à une valeur finale, susceptible d'être gérée 
   spécialement par le code client exécutant le générateur, d'être retournée par le générateur 
   (peut-être à partir d'une forme de calcul coroutine). C'est de loin plus simple 
   que de forcer le code client à vérifier d'abord si la valeur finale a été rendue,
   puis de gérer spécifiquement la valeur quand c'est le cas.
  
  
 
  Délégation de générateur
  
   Les générateurs peuvent maintenant être délégués automatiquement à un autre générateur, 
   un objet Traversable ou un array, 
   en utilisant yield from, sans avoir recours à un boilerplate.
  
  
  
 
  La division d’entiers avec intdiv()
  
   La nouvelle fonction intdiv() retourne le résultat de la division 
   d'entiers effectuée sur ses opérandes.
  
  
  
 
  Les options de session
  
   La fonction session_start() accepte maintenant un array 
   d'options qui surcharge 
   les directives de configuration de session 
   manuellement configurées dans le fichier php.ini.
  
  
   Ces options ont aussi étendu le support pour l'option
   session.lazy_write, 
   qui est activée par défaut et pousse PHP à surcharger les fichiers de session 
   seulement si les données de session ont été mises à jour, et l'option 
   read_and_close, ne pouvant être passée à la fonction 
   session_start() que pour indiquer si les données de session 
   doivent être lues avant que la session soit terminée sans changements.
  
  
   Par exemple, pour mettre session.cache_limiter 
   à private et fermer immédiatement la session après l'avoir lue :
  
  
  
 
  
  
   La nouvelle fonction preg_replace_callback_array() 
   permet au code d'être écrit de façon plus propre en utilisant la fonction 
   preg_replace_callback(). Avant PHP 7, les fonctions de rappel (callback) 
   devaient être exécutées par expression régulière ce qui demande à la fonction de rappel 
   d'être salie avec beaucoup de ramifications.
  
  
   Maintenant, les fonctions de rappel peuvent être enregistrées pour chaque expression 
   régulière en utilisant un tableau associatif, là où la clé est une expression régulière 
   ayant la fonction de rappel comme valeur.
  
  
 
  Les fonctions CSPRNG
  
   Deux nouvelles fonctions ont été ajoutées pour générer cryptographiquement des entiers 
   et des chaînes de caractères sécurisées de façon multi-plateforme :
   random_bytes() et random_int().
  
  
 
  
   La fonction list() peut toujours déballer les objets qui implémentent
   ArrayAccess
  
  
   Auparavant, la fonction list() ne pouvait pas opérer à 100% sur des objets 
   qui implémentent ArrayAccess. Maintenant, ça a été corrigé.
  
  
 
 
  Autres fonctionnalités
  
   - 
    
     L'accès aux membres de la classe (attributs et méthodes) lors du clonage a été ajouté.
     Exemple, (clone $foo)->bar().