Rencontre
Présentation de Damien Seguy @faguo sur PHP 7.3 (beta 1) et les RFC.
Début de la présentation à 19:00 dans les locaux de Lightspeed (le château).
Contenu
Évolution (par rapport à la 7.2)
- Amélioration du Garbage Collector s'il y a beaucoup beaucoup d'objets. (en préparation pour PHP 8)
- Flexible heredoc/nowdoc. C'est à dire, l'indentation du contenu dépend de l'indentation du délimiteur de fin. Les espaces et les tabulations peuvent être utilisées.
// anciennement $a = <<<'BLA' ceci est du texte test test BLA; // le délimiteur de fin devait être au début de la ligne
// en 7.3 $a = <<<'BLA' ceci est du texte test test BLA; // le délimiteur indique le nombre d'espace d'indentation des autres lignes // les deux $a sont identiques.
Peut causer des problème s'il y avait des lignes au centre du contenu avec des espaces et le délimiteur de fin.
- Support des virgules terminales dans les appels de fonctions, comme on pouvait le faire avec les tableaux (array). f(1, 2, 3, ) donne la même chose que f(1, 2, 3). Permet d'uniformiser la syntaxe avec array(1, 2, 3, ) et d'enlever des erreurs lorsqu'on ajoute des paramètres d'une fonction multiligne et qu'on oublie la virgule à l'avant dernier argument. Il y a moins de modification de ligne dans les diffs.
maFonction(1, 2, 3, );
- Les constantes insensibles à la casse sont dépréciées en 7.3. On pouvait en créer avec define('nom', 'valeur', true). Produit un avertissement (notice). Les constantes déclarées avec const sont déjà sensibles à la case (globale ou de classe). Les exceptions sont: true, false et null. Voir la RFC. Note les constantes "const" sont compilées et les constantes avec "define()" sont dynamiques.
Modules: nouveau sqlite3 avec UPSERT, nouveau PCRE 2.0 sans X et S. Meilleure compilation en version 2.
Évolutions mineures
- Drapeau JSON_THROW_ON_ERROR et exception JsonException avec json_encode/json_decode pour lever des exceptions s'il y a des erreurs. RFC: JSON_THROW_ON_ERROR
try { json_decode("{", false, 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { // $e->getCode() are JSON_ERROR_NONE, JSON_ERROR_DEPTH, JSON_ERROR_STATE_MISMATCH, JSON_ERROR_CTRL_CHAR, JSON_ERROR_SYNTAX, JSON_ERROR_UTF8, JSON_ERROR_RECURSION, JSON_ERROR_INF_OR_NAN, JSON_ERROR_UNSUPPORTED_TYPE, JSON_ERROR_INVALID_PROPERTY_NAME, JSON_ERROR_UTF16 }
- compact() lance un avertissement si on utilise une variable non définie
- nouvelle fonction net_get_interfaces()
- nouvelle fonction is_countable() pour les array ou classe avec l'interface Countable
- ajout de l'option SameSite pour les témoins (cookies)
- list() supporte maintenant les références. Exemple: $arr = [1, 2]; list($a, &$b) = $arr;
- On peut utiliser list() dans les foreach. Exemple: $arr = [[1, 2], [3, 4]); foreach ($arr as list($a, b)) { echo $a+$b; }
- image2wbmp() a été enlevé.
- amélioration des hashs de mot de passe d'argon2.
- ajout des fonction array_key_first() et array_key_last(). Pas de fonctions pour la première ou dernière valeur.
- BeOS n'est plus supporté
- Ajout de FILTER_SANITIZE_ADD_SLASHES
Déroulement
Il y avait une personne pour ouvrir les portes et les ascenseurs, sans déranger l'agent de sécurité. C'est grandement apprécié. Il n'y a pas eu de problème avec le projecteur. Pas besoin de micro. Présentation interactive du début à la fin avec des blagues. Questions répondues tout le long de la présentation. Je connaissais le truc pour sortir par les portes avant (le bouton vert sur le côté gauche).
Hyperliens...