PHP 7.2.0 Beta 1

L'équipe de développement PHP annonce la disponibilité immédiate de PHP 7.2.0 Beta 1. Cette version est la première version bêta pour la 7.2.0. Tous les utilisateurs de PHP sont encouragés à tester attentivement cette version et à signaler tout bogue et incompatibilité dans le système de suivi des bogues.

PHP 7.2.0 Beta 1 s'appuie sur les versions précédentes avec :

  • L'extension de Sodium très attendue
  • Améliorations d'Opcache
  • Support comptable pour DOMNodeList et DOMNamedNodeMap
  • Amélioration de la gestion d'UTF8 invalide dans json_decode()
  • Et beaucoup de corrections de bugs...

Pour les téléchargements sources de PHP 7.2.0 Beta 1, visitez la page de téléchargement, les sources Windows et les binaires peuvent être trouvés sur windows.php.net/qa/. La deuxième version bêta sera publiée le 3 août.

Modifications incompatibles arriérées

Core

  • Gettype() renverra maintenant "resource (closed)" au lieu de "type inconnu" pour les ressources fermées.
  • is_object() va maintenant retourner true pour les objets de classe __PHP_Incomplete_Class.
  • Le support pour les systèmes d'exploitation NetWare a été supprimé.
  • Les matrices de casting en objets (avec (Object) ou settype()) couvrent maintenant des clés entières pour les noms de propriétés de chaîne. Cela corrige le comportement des versions précédentes, où les clés entières deviendraient des propriétés inaccessibles avec des noms entiers.
  • La création d'objets dans des tableaux (avec (array) ou settype()) et la récupération des propriétés d'objet dans un tableau avec get_object_vars (), convertiront maintenant les noms de propriété de chaîne numérique (c'est-à-dire les noms de propriétés du format / ^ (0 | (- ? [1-9] [0-9] *)) $ / où PHP_INT_MIN <= n <= PHP_INT_MAX) aux clés entières. Cela corrige le comportement des versions précédentes, où les noms de propriété de chaîne numérique deviennent des clés de chaîne inaccessibles.
  • Les références non définies à des constantes indéfinies génèrent maintenant un avertissement au lieu d'un avis. Ils généreront une erreur dans une future version de PHP.
  • Les versions minimales de Windows prises en charge sont Windows 7 / Server 2008 R2.
  • La vérification de la compatibilité de la valeur de propriété initiale n'effectuera plus de casts (Bug #74269).
  • "object" ne peut plus être utilisé comme nom de classe.

BCMath

  • La fonction bcmod() ne tronque plus les nombres fractionnés en nombres entiers. En tant que tel, son comportement suit maintenant fmod() plutôt que l'opérateur `%`. Par exemple `bcmod('4', '3.5')` renvoie maintenant '0.5' au lieu de '1'.

Hash

  • Les fonctions hash_hmac(), hash_hmac_file(), hash_pbkdf2() et hash_init() (avec HASH_HMAC) n'acceptent plus les hachages non cryptographiques.

JSON

  • L'option json_decode() JSON_OBJECT_AS_ARRAY est utilisée si le second paramètre (assoc) est nul. Auparavant, JSON_OBJECT_AS_ARRAY a toujours été ignoré.

Session

  • Le code connexe register_globals est supprimé et "!" peut être utilisé comme nom de clé $ _SESSION.
  • La session est effectuée pour gérer correctement l'état de la session et empêche les opérations non valides. Seuls les codes inappropriés sont affectés par cette modification. Si vous avez des problèmes, cela signifie que vous avez un problème dans votre code.
  • Des fonctions sont activées pour définir ou retourner l'état de session correct (session_start(), session_status(), session_regenerate_id()).
  • Des fonctions sont faites pour renvoyer le bool de null. Ces fonctions ont un paramètre vide et le paramètre vide est coché (session_unset(), session_write_close()/session_commit(), session_abort(), session_reset()).
  • Les fonctions qui interdisent les opérations non valides en ce qui concerne l'état de la session et l'état de l'en-tête HTTP, renvoie la valeur de retour Bool correcte (session_start(), session_set_cookie_params(), session_name(), session_module_name(), session_set_save_handler(), session_regenerate_id(), session_cache_limiter(), session_cache_expire(), session_unset(), session_destroy(), session_write_close()/session_commit(), session_reset()).
  • Le changement de valeur INI par ini_set() renvoie l'état de mise à jour correctement. Les modifications INI non valides sont vérifiées et effectuées pour échouer (session.name, session.save_path, session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_httponly, session.cookie_secure, session.use_cookies, session.use_only_cookies, session.use_strict_mode, session.referer_check, session.cache_limiter, session.cache_expire, session.lazy_write, session.save_handler, session.serialize_handler, session.gc_probability, session.gc_divior, session.gc_maxlifetime).
  • Certains E_ERROR sont changés en E_WARNING car l'état de la session est géré correctement (session_start()).
  • La session n'initialise plus $ _SESSION pour une session invalide et inutile (session_start()).
  • Lorsque les en-têtes sont déjà envoyés et essaye de définir de nouvelles valeurs INI, session_name(), session_module_name(), session_save_path(), session_cache_limiter() et session_cache_expire() ne fonctionnent plus. Les anciens PHP acceptent de nouvelles valeurs même si de nouvelles valeurs ne seront pas efficaces.
  • Ce nouveau comportement corrigé peut affecter les scripts CLI en mode ligne de commande qui gèrent les sessions. Utilisez le tampon de sortie tout comme les applications Web pour résoudre les problèmes sur les scripts CLI.

Nouvelles fonctionnalités

Core

  • Il est maintenant possible de supprimer les annotations de type d'argument lors de la substitution d'une méthode héritée. Ceci est conforme à la contravariance des types d'arguments de méthode selon le principe de substitution de Liskov.
  • Il est désormais possible de remplacer une méthode abstraite par une autre méthode abstraite dans une classe enfant.
  • Une virgule de départ dans les déclarations d'utilisation de groupe est maintenant autorisée.
  • L'annotation de type "object" est maintenant prise en charge.

DBA

  • Implémentation de la prise en charge du backend LMDB.

OCI8

  • Ajout d'un support de rappel de base de données Oracle Database Failover (TAF).

PCRE

  • Ajout du modificateur `J` pour paramétrer PCRE_DUPNAMES.
  • Ajout du drapeau `PREG_UNMATCHED_AS_NULL` pour permettre de distinguer les sous-modèles inégalés et les correspondances vides en signalant NULL et " "(chaîne vide), respectivement.

Sodium

  • Nouvelle extension cryptographique

SQLite3

  • Implémentation de l'écriture dans les BLOBs.

Standard

  • Mise à jour de l'API de hachage de mot de passe simplifiée pour prendre en charge les hachages Argon2i lorsque PHP est compilé avec libargon2.
  • proc_nice() est maintenant pris en charge sur les plates-formes Windows.

Zip

  • Lire / écrire des archives cryptées, en s'appuyant sur libzip 1.2.0, en utilisant de nouvelles méthodes (ZipArchive::setEncryptionName($name, $method [, $password]); ZipArchive::setEncryptionIndex($index, $method [, $password]);) et de nouvelles constantes (ZipArchive::EM_NONE, ZipArchive::EM_AES_128, ZipArchive::EM_AES_192, ZipArchive::EM_AES_256).
  • Accepte le mot de passe du contexte du flux zip
  • ZipArchive implémente un Countable, ajoutée à la méthode ZipArchive::count().

Fonctionnalités obsolètes

Core

  • La directive trace_errors ini est obsolète.
  • Le mécanisme __autoload() est obsolète, utilisez spl_autoload_register() à la place.
  • Le cast (unset) est obsolète. Cela n'affecte pas la construction de langage unset($var).
  • La fonction create_function() est obsolète, utilisez plutôt des fonctions anonymes.
  • La fonction each() est obsolète, utilisez plutôt une boucle foreach.

EXIF

  • L'alias read_exif_data() est obsolète, utilisez exif_read_data() à la place.

GD

png2wbmp() et jpeg2wbmp() sont obsolètes.

GMP

  • La fonction gmp_random() est obsolète, utilisez gmp_random_bits() ou gmp_random_range() à la place.

Intl

  • INTL_IDNA_VARIANT_2003 est obsolète; utilisez plutôt INTL_IDNA_VARIANT_UTS46.

Mbstring

  • La directive in-mbstring.func_overload est obsolète.

Standard

  • L'appel de parse_str() sans l'argument de résultat est obsolète.
  • Appeler assert() avec un argument de chaîne est obsolète, utilisez plutôt une expression ordinaire.

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter