1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-23 22:52:18 +01:00

Translate migrations 85 (#2285)

This commit is contained in:
Pierre Ambroise
2025-11-10 20:53:20 +01:00
committed by GitHub
parent 1f08544eef
commit 9746f08386
9 changed files with 2814 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<appendix xml:id="migration85" xmlns="http://docbook.org/ns/docbook">
<title>Migration de PHP 8.4.x vers PHP 8.5.x</title>
<simpara>
Cette nouvelle version mineure apporte un certain nombre de
<link linkend="migration85.new-features">nouvelles fonctionnalités</link> et
<link linkend="migration85.incompatible">quelques incompatibilités</link>
qui devraient être testées avant de passer à une nouvelle version de PHP en
production.
</simpara>
<simpara>
&manual.migration.seealso;
<link linkend="migration71">7.1.x</link>,
<link linkend="migration72">7.2.x</link>,
<link linkend="migration73">7.3.x</link>,
<link linkend="migration74">7.4.x</link>,
<link linkend="migration80">8.0.x</link>,
<link linkend="migration81">8.1.x</link>,
<link linkend="migration82">8.2.x</link>.
<link linkend="migration83">8.3.x</link>.
<link linkend="migration84">8.4.x</link>.
</simpara>
&appendices.migration85.new-features;
&appendices.migration85.new-classes;
&appendices.migration85.new-functions;
&appendices.migration85.constants;
&appendices.migration85.incompatible;
&appendices.migration85.deprecated;
&appendices.migration85.other-changes;
&appendices.migration85.windows-support;
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.constants">
<title>Nouvelles constantes globales</title>
<sect2 xml:id="migration85.constants.core">
<title>Core</title>
<simplelist>
<member>
<constant>PHP_BUILD_DATE</constant>
</member>
<member>
<constant>PHP_BUILD_PROVIDER</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.curl">
<title>cURL</title>
<simplelist>
<member>
<constant>CURLINFO_USED_PROXY</constant>
</member>
<member>
<constant>CURLINFO_HTTPAUTH_USED</constant>
</member>
<member>
<constant>CURLINFO_PROXYAUTH_USED</constant>
</member>
<member>
<constant>CURLINFO_CONN_ID</constant>
</member>
<member>
<constant>CURLINFO_QUEUE_TIME_T</constant>
</member>
<member>
<constant>CURLOPT_INFILESIZE_LARGE</constant>
</member>
<member>
<constant>CURLFOLLOW_ALL</constant>
</member>
<member>
<constant>CURLFOLLOW_OBEYCODE</constant>
</member>
<member>
<constant>CURLFOLLOW_FIRSTONLY</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.filter">
<title>Filter</title>
<simplelist>
<member>
<constant>FILTER_THROW_ON_FAILURE</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.intl">
<title>Intl</title>
<simplelist>
<member>
<constant>DECIMAL_COMPACT_SHORT</constant>
</member>
<member>
<constant>DECIMAL_COMPACT_LONG</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.openssl">
<title>OpenSSL</title>
<simplelist>
<member><constant>OPENSSL_PKCS1_PSS_PADDING</constant></member>
<member><constant>PKCS7_NOSMIMECAP</constant></member>
<member><constant>PKCS7_CRLFEOL</constant></member>
<member><constant>PKCS7_NOCRL</constant></member>
<member><constant>PKCS7_NO_DUAL_CONTENT</constant></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.posix">
<title>POSIX</title>
<simplelist>
<member><constant>POSIX_SC_OPEN_MAX</constant></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.sockets">
<title>Sockets</title>
<simplelist>
<member>
<constant>IPPROTO_ICMP</constant>
</member>
<member>
<constant>IPPROTO_ICMPV6</constant>
</member>
<member>
<constant>TCP_FUNCTION_BLK</constant> (FreeBSD seulement)
</member>
<member>
<constant>TCP_FUNCTION_ALIAS</constant> (FreeBSD seulement)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA</constant> (FreeBSD seulement)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_NODOM</constant> (FreeBSD seulement)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_CURDOM</constant> (FreeBSD seulement)
</member>
<member>
<constant>TCP_BBR_ALGORITHM</constant> (FreeBSD seulement)
</member>
<member>
<constant>AF_PACKET</constant> (Linux seulement)
</member>
<member>
<constant>IP_BINDANY</constant> (FreeBSD/NetBSD/OpenBSD seulement)
</member>
<member>
<constant>SO_BUSY_POLL</constant> (Linux seulement)
</member>
<member>
<constant>UDP_SEGMENT</constant> (Linux seulement)
</member>
<member>
<constant>SHUT_RD</constant>
</member>
<member>
<constant>SHUT_WR</constant>
</member>
<member>
<constant>SHUT_RDWR</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.tokenizer">
<title>Tokenizer</title>
<simplelist>
<member>
<constant>T_VOID_CAST</constant>
</member>
<member>
<constant>T_PIPE</constant>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.constants.standard">
<title>Standard</title>
<simplelist>
<member>
<constant>IMAGETYPE_SVG</constant>
lorsque libxml est chargé.
</member>
</simplelist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,532 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.deprecated">
<title>Fonctionnalités dépréciées</title>
<sect2 xml:id="migration85.deprecated.core">
<title>PHP Core</title>
<sect3 xml:id="migration85.deprecated.core.changes-to-user-output-handler">
<title>Changement aux gestionnaires de sortie utilisateur</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_4 -->
<simpara>
Renvoyer une valeur non-chaîne depuis un gestionnaire de sortie utilisateur est déprécié. La
notification de dépréciation contournera le gestionnaire avec la mauvaise valeur de retour pour s'assurer
qu'elle soit visible ; s'il y a des gestionnaires de sortie imbriqués, le suivant sera
toujours utilisé.
</simpara>
<simpara>
Essayer de produire une sortie (par exemple avec <function>echo</function>) dans un
gestionnaire de sortie utilisateur est déprécié.
L'avertissement de dépréciation contournera le gestionnaire produisant la sortie pour
s'assurer qu'elle soit visible ; s'il y a des gestionnaires de sortie imbriqués,
le suivant sera toujours utilisé. Si un gestionnaire de sortie utilisateur renvoie une valeur non-chaîne et
produit une sortie, l'avertissement concernant la production d'une sortie est émis en premier.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.non-canonical-cast-names">
<title>Les noms de cast non canoniques</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_non-standard_cast_names -->
<simpara>
Les noms de cast non canoniques <literal>(boolean)</literal>,
<literal>(integer)</literal>, <literal>(double)</literal>,
et <literal>(binary)</literal> ont été dépréciés.
Utiliser <literal>(bool)</literal>, <literal>(int)</literal>,
<literal>(float)</literal>, et <literal>(string)</literal> respectivement.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.case-statements-with-semicolon">
<title>Terminer les instructions case par un point-virgule</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_semicolon_after_case_in_switch_statement -->
<simpara>
Terminer les instructions case par un point-virgule au lieu d'un deux-points a
été déprécié.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.the-backtick-operator">
<title>L'opérateur backtick (accent grave)</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_backticks_as_an_alias_for_shell_exec -->
<simpara>
<link linkend="language.operators.execution">L'opérateur backtick (accent grave)</link>
en tant qu'alias de <function>shell_exec</function> a été déprécié.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-null-from-debuginfo">
<title>Retourner null depuis __debugInfo()</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_debuginfo_returning_null -->
<simpara>
Retourner &null; depuis
<link linkend="language.oop5.magic.debuginfo">__debugInfo()</link>
a été déprécié. Retourner un tableau vide à la place.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-memleaks-ini-directive">
<title>Directive INI report_memleaks</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_report_memleaks_ini_directive -->
<simpara>
La directive INI <link linkend="ini.report-memleaks">report_memleaks</link>
a été dépréciée.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.constant-redeclaration">
<title>Redéclaration de constantes</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_constant_redeclaration -->
<simpara>
La redéclaration de constantes a été dépréciée.
Notez que cela générait déjà un avertissement et continuera à le faire.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.closure-binding-issues">
<title>Problèmes de liaison des fermetures</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_closure_binding_issues -->
<para>
Les problèmes suivants de liaison des fermetures, qui génèrent déjà un
<constant>E_WARNING</constant>, sont désormais dépréciés :
<simplelist>
<member>Liaison d'une instance à une fermeture statique.</member>
<member>Liaison de méthodes à des objets qui ne sont pas des instances de la classe
(ou sous-classe) dans laquelle la méthode est définie.</member>
<member>Dissociation de $this d'une méthode.</member>
<member>Dissociation de $this d'une fermeture qui utilise `$this`.</member>
<member>Liaison d'une fermeture au contexte d'une classe interne.</member>
<member>Re-liaison du contexte d'une fermeture créée à partir d'une fonction ou d'une méthode.</member>
</simplelist>
</para>
</sect3>
<sect3 xml:id="migration85.deprecated.core.sleep-and-wakeup-magic-methods">
<title>Les méthodes magiques __sleep() et __wakeup()</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_sleep_and_wakeup_magic_methods -->
<!-- RFC: https://wiki.php.net/rfc/soft-deprecate-sleep-wakeup -->
<simpara>
Les méthodes magiques <link linkend="object.sleep">__sleep()</link> et
<link linkend="object.wakeup">__wakeup()</link> ont été doucement dépréciées.
Les méthodes magiques <link linkend="object.serialize">__serialize()</link> et
<link linkend="object.unserialize">__unserialize()</link> devraient être utilisées
à la place, ou en même temps si la compatibilité
avec PHP 7 est requise.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.using-null-as-an-array-offset">
<title>Utilisation de null comme offset de tableau</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_using_values_null_as_an_array_offset_and_when_calling_array_key_exists -->
<simpara>
L'utilisation de &null; comme offset de tableau ou lors de l'appel de <function>array_key_exists</function>
est désormais dépréciée. À la place, une chaîne vide doit être utilisée.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.incrementing-non-numeric-strings">
<title>Incrémentation des chaînes non numériques</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#enact_follow-up_phase_of_the_path_to_saner_incrementdecrement_operators_rfc -->
<simpara>
L'incrémentation des chaînes non numériques est désormais dépréciée.
À la place, la fonction <function>str_increment</function> doit être utilisée.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.register-argc-argv-directive">
<title>Directive INI register_argc_argv</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_register_argc_argv_ini_directive -->
<simpara>
La dérivation de <code>$_SERVER['argc']</code> et <code>$_SERVER['argv']</code>
à partir de la chaîne de requête pour les SAPIs non-CLI a été dépréciée.
Configurez <literal>register_argc_argv=0</literal> et passez soit à
<varname>$_GET</varname> soit à <code>$_SERVER['QUERY_STRING']</code>
pour accéder à l'information, après avoir vérifié que l'utilisation est sûre.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.deprecated.curl">
<title>cURL</title>
<simpara>
La fonction <function>curl_close</function> a été dépréciée,
car les objets <classname>CurlHandle</classname> sont libérés automatiquement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_close -->
</simpara>
<simpara>
La fonction <function>curl_share_close</function> a été dépréciée,
car les objets <classname>CurlShareHandle</classname> sont libérés automatiquement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_share_close -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.date">
<title>Date</title>
<simpara>
Les constantes <constant>DATE_RFC7231</constant> et
<constant>DateTimeInterface::RFC7231</constant> ont été dépréciées.
Cela est dû au fait que le fuseau horaire associé est ignoré et utilise toujours GMT.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_date_rfc7231_and_datetimeinterfacerfc7231 -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.fileinfo">
<title>FileInfo</title>
<simpara>
La fonction <function>finfo_close</function> a été dépréciée,
car les objets <classname>finfo</classname> sont libérés automatiquement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_finfo_close -->
</simpara>
<simpara>
Le paramètre <parameter>$context</parameter> de la fonction
<function>finfo_buffer</function> a été déprécié,
car il est ignoré.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_context_parameter_for_finfo_buffer -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.gd">
<title>GD</title>
<simpara>
La fonction <function>imagedestroy</function> a été dépréciée,
car les objets <classname>GdImage</classname> sont libérés automatiquement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_imagedestroy -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.hash">
<title>Hash</title>
<simpara>
Les constantes <constant>MHASH_<replaceable>*</replaceable></constant> ont
été dépréciées.
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.intl">
<title>Intl</title>
<simpara>
La configuration INI <link linkend="ini.intl.error-level">intl.error_level</link>
a été dépréciée.
Les erreurs doivent soit être vérifiées manuellement, soit les exceptions doivent être activées
en utilisant la configuration INI
<link linkend="ini.intl.use-exceptions">intl.use_exceptions</link>.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_intlerror_level_ini_setting -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.ldap">
<title>LDAP</title>
<para>
Les appels et constantes spécifiques à Oracle Instant Client ont été dépréciés.
Liste des appels affectés :
<simplelist>
<member><function>ldap_connect</function> avec le support wallet</member>
<member><function>ldap_connect_wallet</function></member>
</simplelist>
Liste des constantes affectées :
<simplelist>
<member><constant>GSLC_SSL_NO_UATH</constant></member>
<member><constant>GSLC_SSL_ONEWAY_UATH</constant></member>
<member><constant>GSLC_SSL_TWOWAY_UATH</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_building_ext_ldap_against_oracle_ldap -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.mysqli">
<title>MySQLi</title>
<simpara>
L'alias <function>mysqli_execute</function> a été déprécié.
Utilisez <function>mysqli_stmt_execute</function> à la place.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#formally_deprecate_mysqli_execute -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.openssl">
<title>OpenSSL</title>
<simpara>
Le paramètre <parameter>$key_length</parameter> de la fonction
<function>openssl_pkey_derive</function> a été déprécié.
Cela est dû au fait qu'il est soit ignoré, soit tronque la clé, ce qui peut être
une vulnérabilité de sécurité.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_key_length_parameter_of_openssl_pkey_derive -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.pdo">
<title>PDO</title>
<simpara>
Le schéma DSN <literal>"uri:"</literal> a été déprécié en raison de problèmes de sécurité liés aux
DSN provenant d'URI distantes.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_pdo_s_urischeme -->
</simpara>
<para>
Les constantes spécifiques aux pilotes dans la classe PDO ont été dépréciées.
Liste des constantes affectées et leur remplacement :
<simplelist>
<member><constant>PDO::DBLIB_ATTR_CONNECTION_TIMEOUT</constant> => <constant>Pdo\Dblib::ATTR_CONNECTION_TIMEOUT</constant></member>
<member><constant>PDO::DBLIB_ATTR_QUERY_TIMEOUT</constant> => <constant>Pdo\Dblib::ATTR_QUERY_TIMEOUT</constant></member>
<member><constant>PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER</constant> => <constant>Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER</constant></member>
<member><constant>PDO::DBLIB_ATTR_VERSION</constant> => <constant>Pdo\Dblib::ATTR_VERSION</constant></member>
<member><constant>PDO::DBLIB_ATTR_TDS_VERSION</constant> => <constant>Pdo\Dblib::ATTR_TDS_VERSION</constant></member>
<member><constant>PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS</constant> => <constant>Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS</constant></member>
<member><constant>PDO::DBLIB_ATTR_DATETIME_CONVERT</constant> => <constant>Pdo\Dblib::ATTR_DATETIME_CONVERT</constant></member>
<member><constant>PDO::FB_ATTR_DATE_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_DATE_FORMAT</constant></member>
<member><constant>PDO::FB_ATTR_TIME_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_TIME_FORMAT</constant></member>
<member><constant>PDO::FB_ATTR_TIMESTAMP_FORMAT</constant> => <constant>Pdo\Firebird::ATTR_TIMESTAMP_FORMAT</constant></member>
<member><constant>PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</constant> => <constant>Pdo\Mysql::ATTR_USE_BUFFERED_QUERY</constant></member>
<member><constant>PDO::MYSQL_ATTR_LOCAL_INFILE</constant> => <constant>Pdo\Mysql::ATTR_LOCAL_INFILE</constant></member>
<member><constant>PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY</constant> => <constant>Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY</constant></member>
<member><constant>PDO::MYSQL_ATTR_INIT_COMMAND</constant> => <constant>Pdo\Mysql::ATTR_INIT_COMMAND</constant></member>
<member><constant>PDO::MYSQL_ATTR_MAX_BUFFER_SIZE</constant> => <constant>Pdo\Mysql::ATTR_MAX_BUFFER_SIZE</constant></member>
<member><constant>PDO::MYSQL_ATTR_READ_DEFAULT_FILE</constant> => <constant>Pdo\Mysql::ATTR_READ_DEFAULT_FILE</constant></member>
<member><constant>PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</constant> => <constant>Pdo\Mysql::ATTR_READ_DEFAULT_GROUP</constant></member>
<member><constant>PDO::MYSQL_ATTR_COMPRESS</constant> => <constant>Pdo\Mysql::ATTR_COMPRESS</constant></member>
<member><constant>PDO::MYSQL_ATTR_DIRECT_QUERY</constant> => <constant>Pdo\Mysql::ATTR_DIRECT_QUERY</constant></member>
<member><constant>PDO::MYSQL_ATTR_FOUND_ROWS</constant> => <constant>Pdo\Mysql::ATTR_FOUND_ROWS</constant></member>
<member><constant>PDO::MYSQL_ATTR_IGNORE_SPACE</constant> => <constant>Pdo\Mysql::ATTR_IGNORE_SPACE</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_KEY</constant> => <constant>Pdo\Mysql::ATTR_SSL_KEY</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CERT</constant> => <constant>Pdo\Mysql::ATTR_SSL_CERT</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CA</constant> => <constant>Pdo\Mysql::ATTR_SSL_CA</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CAPATH</constant> => <constant>Pdo\Mysql::ATTR_SSL_CAPATH</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_CIPHER</constant> => <constant>Pdo\Mysql::ATTR_SSL_CIPHER</constant></member>
<member><constant>PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</constant> => <constant>Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT</constant></member>
<member><constant>PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY</constant> => <constant>Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY</constant></member>
<member><constant>PDO::MYSQL_ATTR_MULTI_STATEMENTS</constant> => <constant>Pdo\Mysql::ATTR_MULTI_STATEMENTS</constant></member>
<member><constant>PDO::ODBC_ATTR_USE_CURSOR_LIBRARY</constant> => <constant>Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY</constant></member>
<member><constant>PDO::ODBC_ATTR_ASSUME_UTF8</constant> => <constant>Pdo\Odbc::ATTR_ASSUME_UTF8</constant></member>
<member><constant>PDO::ODBC_SQL_USE_IF_NEEDED</constant> => <constant>Pdo\Odbc::SQL_USE_IF_NEEDED</constant></member>
<member><constant>PDO::ODBC_SQL_USE_DRIVER</constant> => <constant>Pdo\Odbc::SQL_USE_DRIVER</constant></member>
<member><constant>PDO::ODBC_SQL_USE_ODBC</constant> => <constant>Pdo\Odbc::SQL_USE_ODBC</constant></member>
<member><constant>PDO::PGSQL_ATTR_DISABLE_PREPARES</constant> => <constant>Pdo\Pgsql::ATTR_DISABLE_PREPARES</constant></member>
<member><constant>PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES</constant> => <constant>Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODES</constant></member>
<member><constant>PDO::SQLITE_ATTR_OPEN_FLAGS</constant> => <constant>Pdo\Sqlite::OPEN_FLAGS</constant></member>
<member><constant>PDO::SQLITE_ATTR_READONLY_STATEMENT</constant> => <constant>Pdo\Sqlite::ATTR_READONLY_STATEMENT</constant></member>
<member><constant>PDO::SQLITE_DETERMINISTIC</constant> => <constant>Pdo\Sqlite::DETERMINISTIC</constant></member>
<member><constant>PDO::SQLITE_OPEN_READONLY</constant> => <constant>Pdo\Sqlite::OPEN_READONLY</constant></member>
<member><constant>PDO::SQLITE_OPEN_READWRITE</constant> => <constant>Pdo\Sqlite::OPEN_READWRITE</constant></member>
<member><constant>PDO::SQLITE_OPEN_CREATE</constant> => <constant>Pdo\Sqlite::OPEN_CREATE</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_building_ext_ldap_against_oracle_ldap -->
</para>
<para>
Les méthodes spécifiques aux pilotes dans la classe PDO ont été dépréciées.
Liste des méthodes affectées et leur remplacement :
<simplelist>
<member><methodname>PDO::pgsqlCopyFromArray</methodname> => <methodname>Pdo\Pgsql::copyFromArray</methodname></member>
<member><methodname>PDO::pgsqlCopyFromFile</methodname> => <methodname>Pdo\Pgsql::copyFromFile</methodname></member>
<member><methodname>PDO::pgsqlCopyToArray</methodname> => <methodname>Pdo\Pgsql::copyToArray</methodname></member>
<member><methodname>PDO::pgsqlCopyToFile</methodname> => <methodname>Pdo\Pgsql::copyToFile</methodname></member>
<member><methodname>PDO::pgsqlGetNotify</methodname> => <methodname>Pdo\Pgsql::getNotify</methodname></member>
<member><methodname>PDO::pgsqlGetPid</methodname> => <methodname>Pdo\Pgsql::getPid</methodname></member>
<member><methodname>PDO::pgsqlLOBCreate</methodname> => <methodname>Pdo\Pgsql::lobCreate</methodname></member>
<member><methodname>PDO::pgsqlLOBOpen</methodname> => <methodname>Pdo\Pgsql::lobOpen</methodname></member>
<member><methodname>PDO::pgsqlLOBUnlink</methodname> => <methodname>Pdo\Pgsql::lobUnlink</methodname></member>
<member><methodname>PDO::sqliteCreateAggregate</methodname> => <methodname>Pdo\Sqlite::createAggregate</methodname></member>
<member><methodname>PDO::sqliteCreateCollation</methodname> => <methodname>Pdo\Sqlite::createCollation</methodname></member>
<member><methodname>PDO::sqliteCreateFunction</methodname> => <methodname>Pdo\Sqlite::createFunction</methodname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_driver_specific_pdo_constants_and_methods -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.pdo-pgsql">
<title>PDO_PGSQL</title>
<para>
Les constantes liées aux états de transaction ont été dépréciées car cette fonctionnalité n'est pas disponible avec PDO :
<simplelist>
<member><constant>PDO::PGSQL_TRANSACTION_IDLE</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_ACTIVE</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_INTRANS</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_INERROR</constant></member>
<member><constant>PDO::PGSQL_TRANSACTION_UNKNOWN</constant></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#extpdo_deprecations -->
</para>
</sect2>
<sect2 xml:id="migration85.deprecated.reflection">
<title>Reflection</title>
<simpara>
Les méthodes <code>setAccessible()</code> de divers objets Reflection ont été
dépréciées, car elles n'ont plus d'effet.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionsetaccessible -->
</simpara>
<simpara>
L'appel de <methodname>ReflectionClass::getConstant</methodname> pour des constantes
qui n'existent pas a été déprécié.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionclassgetconstant_for_missing_constants -->
</simpara>
<simpara>
L'appel de <methodname>ReflectionProperty::getDefaultValue</methodname> pour
des propriétés sans valeurs par défaut a été déprécié.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionpropertygetdefaultvalue_for_properties_without_default_values -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.spl">
<title>SPL</title>
<simpara>
La désinscription de tous les chargeurs automatiques en passant la
fonction <function>spl_autoload_call</function> comme argument de rappel à
<function>spl_autoload_unregister</function> a été dépréciée.
Si cela est nécessaire, il faut plutôt itérer sur la valeur de retour de
<function>spl_autoload_functions</function> et appeler
<function>spl_autoload_unregister</function> sur chaque valeur.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_spl_autoload_call_to_spl_autoload_unregister -->
</simpara>
<simpara>
Les méthodes <methodname>SplObjectStorage::contains</methodname>,
<methodname>SplObjectStorage::attach</methodname>, et
<methodname>SplObjectStorage::detach</methodname> ont été dépréciées
au profit de <methodname>SplObjectStorage::offsetExists</methodname>,
<methodname>SplObjectStorage::offsetSet</methodname>, et
<methodname>SplObjectStorage::offsetUnset</methodname> respectivement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_splobjectstoragecontains_splobjectstorageattach_and_splobjectstoragedetach -->
</simpara>
<simpara>
L'utilisation de <classname>ArrayObject</classname> et
<classname>ArrayIterator</classname> avec des objets a été dépréciée.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_arrayobject_and_arrayiterator_with_objects -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.standard">
<title>Standard</title>
<simpara>
L'alias <function>socket_set_timeout</function> a été déprécié.
Utiliser <function>stream_set_timeout</function> à la place.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#formally_deprecate_socket_set_timeout -->
</simpara>
<simpara>
Passer &null; à <function>readdir</function>,
<function>rewinddir</function>, et <function>closedir</function>
pour utiliser le dernier répertoire ouvert a été déprécié.
Fournir explicitement le dernier répertoire ouvert à la place.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_null_to_readdir_rewinddir_and_closedir -->
</simpara>
<simpara>
Passer des entiers en dehors de l'intervalle <literal>[0, 255]</literal> à <function>chr</function>
est désormais déprécié.
Ceci est dû au fait qu'un octet ne peut contenir qu'une valeur dans cet intervalle.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_integers_outside_the_interval_0_255_to_chr -->
</simpara>
<simpara>
Passer des chaînes qui ne sont pas d'un octet à <function>chr</function>
est désormais déprécié, ceci est indicatif d'un bug.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_string_which_are_not_one_byte_long_to_ord -->
</simpara>
<simpara>
La variable prédéfinie locale
<link linkend="reserved.variables.httpresponseheader">$http_response_header</link>
est dépréciée. Il faut plutôt appeler la fonction
<function>http_get_last_response_headers</function>.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_http_response_header_predefined_variable -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.xml">
<title>XML</title>
<simpara>
La fonction <function>xml_parser_free</function> a été dépréciée,
car les objets <classname>XMLParser</classname> sont libérés automatiquement.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_xml_parser_free -->
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,590 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Changements non rétrocompatibles</title>
<sect2 xml:id="migration85.incompatible.core">
<title>PHP Core</title>
<sect3 xml:id="migration85.incompatible.core.array-callable-alias">
<title>Les noms d'alias <literal>"array"</literal> et <literal>"callable"</literal></title>
<simpara>
Il n'est plus possible d'utiliser <literal>"array"</literal>
et <literal>"callable"</literal> comme noms d'alias de classe
dans <function>class_alias</function>
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.loosely-comparing-object">
<title>Comparaison approximative d'objets non comparables</title>
<simpara>
Comparer approximativement des objets non comparables (par exemple des enums,
<classname>CurlHandle</classname> et d'autre classes internes) à des booléens
était auparavant incohérent. Si comparé à un littéral booléen
<code>$object == true</code>, il se comportait de la même manière que
<code>(bool)$object</code>. Si comparé à une valeur statiquement inconnue
<code>$object == $true</code>, il retournait toujours &false;.
Ce comportement a été consolidé pour toujours suivre le comportement de
<code>(bool)$object</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.gc-collect-cycles">
<title>Valeur de retour de gc_collect_cycles</title>
<simpara>
La valeur de retour de <function>gc_collect_cycles</function> n'inclut plus
les chaînes et ressources qui ont été collectées indirectement via des cycles.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.substitute-final-subclasses">
<title>Substituer le mot-clé static dans une sous-classe finale</title>
<simpara>
Il est désormais permis de substituer <type>static</type> par <type>self</type> ou le nom concret de la classe
dans les sous-classes finales.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.tick-handlers">
<title>Gestionnaires de tick</title>
<simpara>
Les gestionnaires de tick sont désormais désactivés après l'exécution de toutes les fonctions de fermeture,
la destruction des objets et le nettoyage des gestionnaires de sortie.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.trait-binding">
<title>Liaison des traits</title>
<simpara>
Les traits sont désormais liés avant la classe parente. Il s'agit d'un changement comportemental subtil,
mais qui devrait mieux correspondre aux attentes des utilisateurs.
<!-- https://github.com/php/php-src/pull/15878 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.errors-compilation-and-linking">
<title>Erreurs lors de la compilation et du chaînage des classes</title>
<simpara>
Les erreurs émises lors de la compilation et du chaînage des classes sont désormais toujours différées
et traitées après la compilation ou le chaînage des classes. Les erreurs fatales émises
lors de la compilation ou du chaînage des classes provoquent le traitement immédiat
de toutes les erreurs différées, sans appeler les gestionnaires d'erreurs définis par l'utilisateur.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.exception-by-userdefined-handler">
<title>Exceptions levées par les gestionnaires d'erreurs définis par l'utilisateur</title>
<simpara>
Les exceptions levées par les gestionnaires d'erreurs définis par l'utilisateur lors du traitement des erreurs
de chaînage des classes ne sont plus promues en erreurs fatales et n'empêchent plus le chaînage.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.attribute-during-compilation">
<title>Erreur d'application d'attribut lors de la compilation</title>
<simpara>
Appliquer <code>#[\Attribute]</code> à une classe abstraite, un enum, une interface ou un trait
déclenche une erreur lors de la compilation. Auparavant, l'attribut pouvait être
ajouté, mais lorsqu'<methodname>ReflectionAttribute::newInstance</methodname>
était appelé, une erreur était levée.
L'erreur peut être différée de la compilation à l'exécution en utilisant le nouvel
attribut <code>#[\DelayedTargetValidation]</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.disable-ini-setting">
<title>Le paramètre INI disable_classes</title>
<simpara>
Le paramètre INI <link linkend="ini.disable-classes">disable_classes</link>
a été supprimé car il provoque la rupture de diverses hypothèses du moteur.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#remove_disable_classes_ini_setting -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.destruct-non-array-values">
<title>Destruction de valeurs non-tableaux</title>
<simpara>
Destructurer des valeurs non-tableaux (autres que &null;) en utilisant <literal>[]</literal> ou <function>list</function>
émet désormais un avertissement.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#destructuring_non-array_values -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.warning-related-to-cast">
<title>Avertissements liés au cast</title>
<simpara>
Un avertissement est désormais émis lors du cast de flottants (ou de chaînes ressemblant
à des flottants) en entiers s'ils ne peuvent pas être représentés comme tels. Cela affecte
les casts explicites en int et les casts implicites en int.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#casting_out_of_range_floats_to_int -->
</simpara>
<simpara>
Un avertissement est désormais émis lors du cast de NAN vers d'autres types.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#coercing_nan_to_other_types -->
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.incompatible.bzip2">
<title>Bzip2</title>
<simpara>
<function>bzcompress</function> lève désormais une <classname>ValueError</classname>
lorsque <parameter>$block_size</parameter> n'est pas compris entre 1 et 9.
</simpara>
<simpara>
<function>bzcompress</function> lève désormais une <classname>ValueError</classname>
lorsque <parameter>$work_factor</parameter> n'est pas compris entre 0 et 250.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.dom">
<title>DOM</title>
<simpara>
Cloner un <classname>DOMNamedNodeMap</classname>,
<classname>DOMNodeList</classname>, <classname>Dom\NamedNodeMap</classname>,
<classname>Dom\NodeList</classname>, <classname>Dom\HTMLCollection</classname>,
et <classname>Dom\DtdNamedNodeMap</classname> échoue désormais.
Cela n'a jamais réellement abouti à un objet fonctionnel, donc aucun impact n'est attendu.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.fileinfo">
<title>FileInfo</title>
<simpara>
<function>finfo_file</function> et <methodname>finfo::file</methodname>
lèvent désormais une <exceptionname>ValueError</exceptionname> à la place de
<exceptionname>TypeError</exceptionname> lorsque <parameter>$filename</parameter>
contient des octets nuls.
Cela aligne le type d'erreur levée pour être cohérent avec le reste du
langage.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.intl">
<title>Intl</title>
<simpara>
L'extension nécessite désormais au moins ICU 57.1.
</simpara>
<simpara>
<methodname>IntlDateFormatter::setTimeZone</methodname>/<function>datefmt_set_timezone</function>
lèvent désormais une <exceptionname>IntlException</exceptionname> en cas de classes non initialisées
ou d'échecs de clonage.
</simpara>
<simpara>
Toutes les méthodes <classname>Locale</classname> lèvent désormais une
<exceptionname>ValueError</exceptionname> lorsque l'argument locale contient des octets nuls.
</simpara>
<simpara>
Le comportement de <constant>Collator::SORT_REGULAR</constant> en ce qui concerne
la gestion des chaînes numériques est désormais aligné sur le comportement de
<constant>SORT_REGULAR</constant> dans ext/standard.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.ldap">
<title>LDAP</title>
<simpara>
<function>ldap_get_option</function> et <function>ldap_set_option</function>
lèvent désormais une <exceptionname>ValueError</exceptionname> lorsqu'une option invalide est passée.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mbstring">
<title>MBString</title>
<simpara>
Les tables de données Unicode ont été mises à jour vers Unicode 17.0
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mysqli">
<title>MySQLi</title>
<simpara>
L'appel au constructeur mysqli sur un objet déjà construit
n'est désormais plus possible et génère une <exceptionname>Error</exceptionname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.odbc">
<title>ODBC</title>
<simpara>
ODBC suppose désormais qu'au moins la fonctionnalité ODBC 3.5 est disponible.
La définition ODBCVER et les indicateurs du système de construction pour la contrôler ont été supprimés.
</simpara>
<simpara>
ODBC ne dispose plus d'indicateurs de construction pour construire avec des pilotes spécifiques (sauf
pour DB2) et supprime les cas spéciaux pour ces pilotes. Il est fortement
recommandé d'utiliser un gestionnaire de pilotes comme iODBC ou unixODBC sur les systèmes non Windows.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.opcache">
<title>Opcache</title>
<simpara>
L'extension Opcache est désormais toujours intégrée dans le binaire PHP et toujours
chargée.
Les directives INI <link linkend="ini.opcache.enable">opcache.enable</link>
et <link linkend="ini.opcache.enable-cli">opcache.enable_cli</link> sont toujours
prises en compte.
</simpara>
<simpara>
Les options de configuration <option role="configure">--enable-opcache</option>/<option role="configure">--disable-opcache</option>
ont été supprimées, et la compilation ne produit plus les fichiers <filename>opcache.so</filename>
ou <filename>php_opcache.dll</filename>.
</simpara>
<simpara>
L'utilisation des directives INI <literal>zend_extension=opcache.so</literal> ou
<literal>zend_extension=php_opcache.dll</literal>
émettra un avertissement.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcntl">
<title>PCNTL</title>
<simpara>
<function>pcntl_exec</function> lève désormais une <exceptionname>ValueError</exceptionname>
lorsque les entrées du paramètre <parameter>$args</parameter> contiennent des octets nuls.
</simpara>
<simpara>
<function>pcntl_exec</function> lève désormais une <exceptionname>ValueError</exceptionname>
lorsque les entrées ou les clés du paramètre <parameter>$env_vars</parameter>
contiennent des octets nuls.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcre">
<title>PCRE</title>
<simpara>
L'extension est compilée sans l'option semi-dépréciée
PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK.
<!-- https://github.com/PCRE2Project/pcre2/issues/736#issuecomment-2754024651 -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo">
<title>PDO</title>
<simpara>
Les arguments du constructeur définis en conjonction avec
<constant>PDO::FETCH_CLASS</constant> suivent désormais la sémantique habituel de CUFA
(<function>call_user_func_array</function>).
Cela signifie que les clés de chaîne agiront comme des arguments nommés.
De plus, l'encapsulation automatique pour les arguments par valeur passés à un paramètre par référence
a été supprimée, et l'habituel <constant>E_WARNING</constant>
à ce sujet est désormais émis.
Pour passer une variable par référence à un argument de constructeur utilisez l'affectation
de référence de valeur de tableau générale : <code>$ctor_args = [&amp;$valByRef]</code>
</simpara>
<simpara>
Essayer d'appeler <methodname>PDOStatement::setFetchMode</methodname> pendant
un appel à <methodname>PDO::fetch</methodname>,
<methodname>PDO::fetchObject</methodname>,
<methodname>PDO::fetchAll</methodname>, par exemple en utilisant des astuces telles que
passer l'objet statement comme argument de constructeur lors de la récupération dans un
objet, lèvera désormais une <exceptionname>Error</exceptionname>.
</simpara>
<simpara>
La valeur des constantes <constant>PDO::FETCH_GROUP</constant>,
<constant>PDO::FETCH_UNIQUE</constant>,
<constant>PDO::FETCH_CLASSTYPE</constant>,
<constant>PDO::FETCH_PROPS_LATE</constant>, et
<constant>PDO::FETCH_SERIALIZE</constant> a changé.
</simpara>
<simpara>
Une <exceptionname>ValueError</exceptionname> est désormais levée si
<constant>PDO::FETCH_PROPS_LATE</constant> est utilisé avec un mode de récupération
différent de <constant>PDO::FETCH_CLASS</constant>, cohérent avec
les autres indicateurs de récupération.
</simpara>
<simpara>
Une <exceptionname>ValueError</exceptionname> est désormais levée si
<constant>PDO::FETCH_INTO</constant> est utilisé comme mode de récupération dans
<methodname>PDO::fetchAll</methodname>,
similaire à <constant>PDO::FETCH_LAZY</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-firebird">
<title>PDO_FIREBIRD</title>
<simpara>
Une <exceptionname>ValueError</exceptionname> est désormais levée lorsqu'on
essaie de définir un nom de curseur trop long sur un <classname>PDOStatement</classname>
résultant du pilote Firebird.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-sqlite">
<title>PDO_SQLITE</title>
<simpara>
SQLite <methodname>PDO::quote</methodname> lève désormais une exception
ou émet un avertissement, en fonction du mode d'erreur, si la chaîne contient
un octet nul.
</simpara>
<simpara>
<methodname>PDO::sqliteCreateCollation</methodname> lève désormais une exception
si le callback a un type de retour incorrect, ce qui le rend plus
conforme au comportement de <methodname>Pdo\Sqlite::createCollation</methodname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.posix">
<title>POSIX</title>
<simpara>
<function>posix_kill</function> lève désormais une
<exceptionname>ValueError</exceptionname> lorsque l'argument process_id est
inférieur ou supérieur à ce que la plateforme supporte (entier signé ou
plage longue), <function>posix_setpgid</function> lève désormais une
<exceptionname>ValueError</exceptionname> lorsque process_id ou
process_group_id est inférieur à zéro ou supérieur à ce que la plateforme
supporte.
</simpara>
<simpara>
<function>posix_setrlimit</function> lève désormais une
<exceptionname>ValueError</exceptionname> lorsque les arguments hard_limit ou
soft_limit sont inférieurs à -1 ou si soft_limit est supérieur à
hard_limit.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.reflection">
<title>Reflection</title>
<simpara>
<methodname>ReflectionAttribute::newInstance</methodname> peut désormais lever
des erreurs pour les attributs internes si l'attribut a été appliqué sur une cible
invalide et que l'erreur a été différée du temps de compilation au temps d'exécution
via l'attribut #[\DelayedTargetValidation].
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.session">
<title>Session</title>
<simpara>
Tenter d'écrire des données de session lorsque <varname>$_SESSION</varname> a une clé
contenant le caractère pipe (<literal>|</literal>) émettra désormais un avertissement
au lieu d'échouer silencieusement.
</simpara>
<simpara>
<function>session_start</function> est désormais plus stricte concernant l'argument options.
Elle lève désormais une <exceptionname>ValueError</exceptionname> si
le tableau n'est pas une table de hachage, ou une <exceptionname>TypeError</exceptionname>
si la valeur read_and_close n'est pas d'un type valide compatible avec int.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.simplexml">
<title>SimpleXML</title>
<simpara>
Passer une expression XPath qui retourne autre chose qu'un ensemble de nœuds
à <methodname>SimpleXMLElement::xpath</methodname> émettra désormais un avertissement
et retournera &false;, au lieu d'échouer silencieusement et de retourner un tableau vide.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.snmp">
<title>SNMP</title>
<simpara>
<function>snmpget</function>,
<function>snmpset</function>,
<function>snmp2_get</function>,
<function>snmp2_set</function>,
<function>snmp3_get</function>,
<function>snmp3_set</function>
et <methodname>SNMP::__construct</methodname> lève désormais une
<exceptionname>ValueError</exceptionname> lorsque le nom d'hôte
est trop grand, contient un octet nul ou si le port est donné
lorsqu'il est négatif ou supérieur à 65535, les valeurs de délai d'attente et de tentatives
sont inférieures à -1 ou trop grandes.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.soap">
<title>SOAP</title>
<simpara>
<methodname>SoapClient::__doRequest</methodname> accepte désormais un nouveau
paramètre optionnel <parameter>$uriParserClass</parameter> acceptant
des arguments de type string ou &null;.
&null; représente la méthode originale basée sur (<function>parse_url</function>),
tandis que les nouveaux backends seront utilisés lorsqu'on passe soit
<classname>Uri\Rfc3986\Uri</classname> ou <classname>Uri\WhatWg\Url</classname>.
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api#plugability -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.sockets">
<title>Sockets</title>
<simpara>
<function>socket_create_listen</function>,
<function>socket_bind</function> et <function>socket_sendto</function>
lèvent désormais une <exceptionname>ValueError</exceptionname> si le port est inférieur
à 0 ou supérieur à 65535, et également si l'une des entrées du tableau hints est
indexée numériquement.
</simpara>
<simpara>
<function>socket_addrinfo_lookup</function> lève désormais une
<exceptionname>TypeError</exceptionname> si l'une des valeurs de hints ne peut pas
être convertie en int et peut lever une <exceptionname>ValueError</exceptionname> si
l'une de ces valeurs dépasse la capacité.
</simpara>
<simpara>
<function>socket_set_option</function> avec les options
<constant>MCAST_LEAVE_GROUP</constant>/<constant>MCAST_LEAVE_SOURCE_GROUP</constant>
lève désormais une exception si la valeur n'est pas un objet ou un tableau valide.
</simpara>
<simpara>
<function>socket_set_option</function> avec le contexte multicast lève désormais une
<exceptionname>ValueError</exceptionname> lorsque le socket créé n'est pas de la famille
<constant>AF_INET</constant>/<constant>AF_INET6</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.spl">
<title>SPL</title>
<simpara>
<classname>ArrayObject</classname> n'accepte plus les enums, car la modification des
<property>$name</property> ou <property>$value</property> peut casser
les hypothèses du moteur.
</simpara>
<simpara>
Le paramètre <parameter>$length</parameter> de
la fonction <methodname>SplFileObject::fwrite</methodname>
est désormais nullable.
La valeur par défaut est passée de <literal>0</literal> à &null;.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.standard">
<title>Standard</title>
<simpara>
L'utilisation d'une fonction de la famille printf avec un formatteur qui ne spécifiait pas la
précision réinitialisait incorrectement la précision au lieu de la traiter
comme une précision de 0.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.tidy">
<title>Tidy</title>
<simpara>
<methodname>tidy::__construct</methodname>,
<methodname>tidy::parseFile</methodname>,
<methodname>tidy::parseString</methodname> lève désormais une
<exceptionname>ValueError</exceptionname> si la configuration contient une
valeur invalide ou tente de définir une entrée interne en lecture seule,
et une <exceptionname>TypeError</exceptionname> si une clé de configuration n'est pas une
chaîne.
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.new-classes" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nouvelles classes et interfaces</title>
<sect2 xml:id="migration85.new-classes.core">
<title>Core</title>
<simplelist>
<member><classname>NoDiscard</classname></member>
<member><classname>DelayedTargetValidation</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/marking_return_value_as_important -->
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</sect2>
<sect2 xml:id="migration85.new-classes.curl">
<title>Curl</title>
<simplelist>
<member><classname>CurlSharePersistentHandle</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
</sect2>
<sect2 xml:id="migration85.new-classes.filter">
<title>Filter</title>
<simplelist>
<member><classname>Filter\FilterException</classname></member>
<member><classname>Filter\FilterFailedException</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/filter_throw_on_failure -->
</sect2>
<sect2 xml:id="migration85.new-classes.uri">
<title>URI</title>
<simplelist>
<member><classname>Uri\UriException</classname></member>
<member><classname>Uri\InvalidUriException</classname></member>
<member><classname>Uri\UriComparisonMode</classname></member>
<member><classname>Uri\Rfc3986\Uri</classname></member>
<member><classname>Uri\WhatWg\InvalidUrlException</classname></member>
<member><classname>Uri\WhatWg\UrlValidationErrorType</classname></member>
<member><classname>Uri\WhatWg\UrlValidationError</classname></member>
<member><classname>Uri\WhatWg\Url</classname></member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api -->
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,498 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nouvelle fonctionnalités</title>
<sect2 xml:id="migration85.new-features.core">
<title>PHP Core</title>
<sect3 xml:id="migration85.new-features.core.pipe-operator">
<title>Opérateur pipe</title>
<simpara>
Ajout de l'<link linkend="language.operators.functional">opérateur pipe
(<literal>|&gt;</literal>)</link>.
<!-- RFC: https://wiki.php.net/rfc/pipe-operator-v3 -->
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$result = "Hello World" |> strlen(...);
print $result . PHP_EOL; // Affiche "11"
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.closures-in-constexpr">
<title>Fermeture dans les expressions constantes</title>
<para>
Ajout du support pour <link linkend="class.closure">Closures</link> et
<link linkend="functions.first_class_callable_syntax">callable de première classes</link>
dans les expressions constantes. Cela inclus :
<simplelist>
<member>Paramètres d'attribut.</member>
<member>Valeurs par défaut des propriétés et des paramètres.</member>
<member>Constantes et constantes de classe.</member>
</simplelist>
<!-- RFC: https://wiki.php.net/rfc/closures_in_const_expr -->
<!-- RFC: https://wiki.php.net/rfc/fcc_in_const_expr -->
</para>
</sect3>
<sect3 xml:id="migration85.new-features.core.nodiscard-attribute">
<title>L'attribut #[\NoDiscard]</title>
<simpara>
Ajout de l'attribut <classname>NoDiscard</classname> pour indiquer que la valeur de retour d'une
fonction est importante et doit être utilisée.
<!-- RFC: https://wiki.php.net/rfc/marking_return_value_as_important -->
</simpara>
<simpara>
Par ailleurs, ajout du cast <literal>(void)</literal> pour indiquer que le fait de ne pas utiliser une valeur est intentionnel.
Le cast <literal>(void)</literal> n'a pas d'effet sur l'exécution du programme en soi, mais
il peut être utilisé pour supprimer les avertissements émis par <code>#[\NoDiscard]</code> et éventuellement
aussi les diagnostics émis par des IDE externes ou des outils d'analyse statique.
<!-- RFC: https://wiki.php.net/rfc/marking_return_value_as_important -->
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
#[\NoDiscard]
function concat(string $a, string $b): string {
return a + b;
}
// Attention : La valeur de retour de la fonction concat() doit être utilisée ou
// intentionnellement ignorée en la castant en (void) dans xxx.php
concat("a", "b");
// Aucun avertissement, car la valeur de retour est utilisée par l'affectation.
$results = concat("a", "b");
// Aucun avertissement, car le cast (void) est utilisé.
(void)concat("a", "b");
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.attributes-on-constants">
<title>Attributes sur les constantes</title>
<simpara>
Ajout du support des attributes sur les constantes non liées à une classe au moment de la compilation
(par ex. <code>const MA_CONST = 1;</code> plutôt que
<code>define('MA_CONST', 1);</code>).
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
</simpara>
<simpara>
L'attribut <classname>Deprecated</classname> peut désormais être utilisé sur les constantes.
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.delayedtargetvalidation-attribute">
<title>L'attribut <code>#[\DelayedTargetValidation]</code></title>
<simpara>
Le nouvel attribut <classname>DelayedTargetValidation</classname> peut être utilisé
pour supprimer les erreurs de compilation provenant des attributs du core (ou des extensions) qui sont
utilisés sur des cibles invalides. Ces erreurs sont plutôt signalées à l'exécution si et
quand <methodname>ReflectionAttribute::newInstance</methodname> est appelé.
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.override-for-properties">
<title>L'attribut <code>#[\Override]</code> pour les propriétés</title>
<simpara>
L'attribut <classname>Override</classname> peut désormais être appliqué aux propriétés.
<!-- RFC: https://wiki.php.net/rfc/override_properties -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.static-aviz">
<title>Visibilité asymétrique statique</title>
<simpara>
Ajout su support de <link linkend="language.oop5.visibility-members-aviz">visibilité
asymétriques</link> pour les propriétés statiques.
<!-- RFC: https://wiki.php.net/rfc/static-aviz -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.backtraces-for-fatal-errors">
<title>Retour de trace pour les erreurs fatales</title>
<simpara>
Les erreurs fatales (tel que un dépassement du temps d'exécution maximum)
incluent désormais une trace de retour.
<!-- RFC: https://wiki.php.net/rfc/error_backtraces_v2 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.final-property-promotion">
<title>Promotion du constructeur pour les propriétés finales</title>
<simpara>
La <link linkend="language.oop5.decon.constructor.promotion">Promotion
des propriétés du constructeur</link> peut désormais être utilisée pour les propriétés finales.
<!-- RFC: https://wiki.php.net/rfc/final_promotion -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.casts-in-constexpr">
<title>Cast dans les expressions constantes</title>
<simpara>
Ajout du support des casts dans les expressions constantes.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
const T1 = (int) 0.3; // Avant: "Fatal error: Constant expression contains invalid operations"
print T1 . PHP_EOL; // Affiche "0"
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.clone-function">
<title>Fonction clone</title>
<simpara>
La <link linkend="language.oop5.cloning">construction de langage clone</link>
est désormais une fonction et prend en charge la réaffectation des propriétés (readonly) lors
du clonage via le nouveau paramètre <property>$withProperties</property>.
<!-- RFC: https://wiki.php.net/rfc/clone_with_v2 -->
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.new-features.curl">
<title>cURL</title>
<simpara>
Ajout du support pour
<link linkend="class.curlsharepersistenthandle">gestionnaires de partage</link>
qui sont persistés à travers plusieurs requêtes PHP, permettant en toute sécurité
une réutilisation plus efficace des connexions.
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
</simpara>
<simpara>
Ajout du support pour <constant>CURLINFO_USED_PROXY</constant> (libcurl >= 8.7.0),
<constant>CURLINFO_HTTPAUTH_USED</constant>,
et <constant>CURLINFO_PROXYAUTH_USED</constant> (libcurl >= 8.12.0)
à la fonction <function>curl_getinfo</function>.
Lorsque <function>curl_getinfo</function> renvoie un tableau, les mêmes informations
sont disponibles sous les clés <literal>"used_proxy"</literal>,
<literal>"httpauth_used"</literal>, et <literal>"proxyauth_used"</literal>.
<constant>CURLINFO_USED_PROXY</constant> reçoit la valeur zéro si aucun proxy n'a été utilisé lors du
transfert précédent ou une valeur non nulle si un proxy a été utilisé.
<constant>CURLINFO_HTTPAUTH_USED</constant> et
<constant>CURLINFO_PROXYAUTH_USED</constant> reçoivent des masques de bits
indiquant les méthodes d'authentification HTTP et proxy qui ont été
utilisées lors de la requête précédente.
Voir les constantes <constant>CURLAUTH_<replaceable>*</replaceable></constant> pour
les valeurs possibles.
</simpara>
<simpara>
Ajout de l'option Curl <constant>CURLOPT_INFILESIZE_LARGE</constant>, qui est un remplacement sûr
pour <constant>CURLOPT_INFILESIZE</constant>. Sur certains systèmes,
<constant>CURLOPT_INFILESIZE</constant> n'accepte qu'un entier signé 32 bits comme
taille de fichier (2,0 Gio) même sur les systèmes 64 bits.
<constant>CURLOPT_INFILESIZE_LARGE</constant> accepte la plus grande valeur entière
the system can handle.
</simpara>
<simpara>
Ajout des valeurs <constant>CURLFOLLOW_OBEYCODE</constant>,
<constant>CURLFOLLOW_FIRSTONLY</constant> et <constant>CURLFOLLOW_ALL</constant>
pour l'option <constant>CURLOPT_FOLLOWLOCATION</constant>
de la fonction <function>curl_setopt</function>.
<constant>CURLFOLLOW_OBEYCODE</constant> pour suivre plus strictement en ce qui concerne
les redirections si elles sont autorisées.
<constant>CURLFOLLOW_FIRSTONLY</constant> pour ne suivre que la première redirection, ainsi
si une redirection de suivi existe, elle ne sera pas suivie davantage.
<constant>CURLFOLLOW_ALL</constant> est équivalent à définir
<constant>CURLOPT_FOLLOWLOCATION</constant> sur true.
</simpara>
<simpara>
Ajout du support pour <constant>CURLINFO_CONN_ID</constant> (libcurl >= 8.2.0)
à la fonction <function>curl_getinfo</function>. Cette constante permet de récupérer
l'ID unique de la connexion utilisée par un transfert cURL. Elle est principalement
utile lorsque la réutilisation de connexion ou la logique de pool de connexions est nécessaire dans
les applications au niveau PHP. Lorsque <function>curl_getinfo</function> renvoie un tableau,
cette valeur est disponible sous la clé <literal>"conn_id"</literal>.
</simpara>
<simpara>
Ajout du support pour <constant>CURLINFO_QUEUE_TIME_T</constant> (libcurl >= 8.6.0)
à la fonction <function>curl_getinfo</function>. Cette constante permet de récupérer
le temps (en microsecondes) que la requête a passé dans la file d'attente de connexion
de libcurl avant d'être envoyée.
Cette valeur peut également être récupérée en passant
<constant>CURLINFO_QUEUE_TIME_T</constant> au paramètre <parameter>option</parameter>
de <function>curl_getinfo</function>.
</simpara>
<simpara>
Ajout du support pour <constant>CURLOPT_SSL_SIGNATURE_ALGORITHMS</constant>
pour spécifier les algorithmes de signature à utiliser pour TLS.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.dom">
<title>DOM</title>
<simpara>
Ajouter de <property>Dom\Element::$outerHTML</property>.
</simpara>
<simpara>
Ajout de la propriété <property>$children</property> aux
implémentations de <interfacename>Dom\ParentNode</interfacename>.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.exif">
<title>EXIF</title>
<simpara>
Ajout du support pour les tags Exif <literal>OffsetTime*</literal>.
</simpara>
<simpara>
Ajout du support pour HEIF/HEIC.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.filter">
<title>Filter</title>
<simpara>
Ajout du nouveau drapeau <constant>FILTER_THROW_ON_FAILURE</constant> qui peut être
passé aux fonctions de filtrage et qui forcera le déclenchement d'une exception
lorsque la validation échoue.
Le nouveau drapeau ne peut pas être combiné avec
<constant>FILTER_NULL_ON_FAILURE</constant>; essayer de le faire entraînera
en une <exceptionname>TypeError</exceptionname> levée.
<!-- RFC: https://wiki.php.net/rfc/filter_throw_on_failure -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.intl">
<title>Intl</title>
<simpara>
Ajout des constantes de classes <constant>NumberFormatter::CURRENCY_ISO</constant>,
<constant>NumberFormatter::CURRENCY_PLURAL</constant>,
<constant>NumberFormatter::CASH_CURRENCY</constant>,
et <constant>NumberFormatter::CURRENCY_STANDARD</constant>
pour divers styles de formatage des devises.
</simpara>
<simpara>
Ajout de <methodname>Locale::addLikelySubtags</methodname> et
<methodname>Locale::minimizeSubtags</methodname> pour gérer les tags probables
sur une locale donnée.
</simpara>
<simpara>
Ajout de la classe <classname>IntlListFormatter</classname> pour formater, ordonner,
et ponctuer une liste d'éléments avec une locale donnée, les opérandes
<constant>IntlListFormatter::TYPE_AND</constant>,
<constant>IntlListFormatter::TYPE_OR</constant>,
<constant>IntlListFormatter::TYPE_UNITS</constant> et les longueurs
<constant>IntlListFormatter::WIDTH_WIDE</constant>,
<constant>IntlListFormatter::WIDTH_SHORT</constant> et
<constant>IntlListFormatter::WIDTH_NARROW</constant>.
Il est supporté à partir de icu 67.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.pdo-sqlite">
<title>PDO_Sqlite</title>
<simpara>
Ajout des constantes de classes <constant>Pdo\Sqlite::ATTR_BUSY_STATEMENT</constant>
</simpara>
<simpara>
Ajout des constantes de classes <constant>Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT</constant>,
<constant>Pdo\Sqlite::EXPLAIN_MODE_PREPARED</constant>,
<constant>Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN</constant>,
<constant>Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN_QUERY_PLAN</constant>.
</simpara>
<simpara>
Ajout de l'attribut de connexion <constant>Pdo\Sqlite::ATTR_TRANSACTION_MODE</constant>
avec les valeurs possibles <constant>Pdo\Sqlite::TRANSACTION_MODE_DEFERRED</constant>,
<constant>Pdo\Sqlite::TRANSACTION_MODE_IMMEDIATE</constant>,
et <constant>Pdo\Sqlite::TRANSACTION_MODE_EXCLUSIVE</constant>,
permettant de configurer le mode de transaction à utiliser lors de l'appel de beginTransaction().
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.session">
<title>Session</title>
<simpara>
<function>session_set_cookie_params</function>,
<function>session_get_cookie_params</function>,
et <function>session_start</function> supporte désormais les cookies partitionnés
avec la clé <literal>"partitioned"</literal>.
<!-- RFC: https://wiki.php.net/rfc/CHIPS -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.soap">
<title>SOAP</title>
<simpara>
Les cas d'énumération sont désormais inclus dans <methodname>SoapClient::__getTypes</methodname>.
</simpara>
<simpara>
Ajout du support de l'attribut xml:lang du texte Reason de Soap 1.2.
</simpara>
<simpara>
La signature de <methodname>SoapFault::__construct</methodname> et
<methodname>SoapServer::fault</methodname> inclut désormais un paramètre
optionnel <parameter>$lang</parameter>.
Ceci résout la compatibilité avec les clients SOAP .NET.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.standard">
<title>Standard</title>
<simpara>
<function>mail</function> renvoie désormais l'erreur réelle de sendmail et détecte
si le processus sendmail a été terminé de manière inattendue.
Dans de tels cas, un avertissement est émis et la fonction renvoie false.
Auparavant, ces erreurs étaient silencieusement ignorées.
Ce changement n'affecte que le transport sendmail.
</simpara>
<simpara>
<function>getimagesize</function> supporte désormais les images HEIF/HEIC.
</simpara>
<simpara>
<function>getimagesize</function> supporte désormais les images SVG lorsque l'extension ext-libxml
est également chargée.
De même, <function>image_type_to_extension</function> et
<function>image_type_to_mime_type</function>
gèrent désormais également IMAGETYPE_SVG.
</simpara>
<simpara>
Le tableau renvoyé par <function>getimagesize</function> contient désormais deux entrées supplémentaires :
<literal>"width_unit"</literal> et <literal>"height_unit"</literal> pour indiquer dans
quelles unités les dimensions sont exprimées. Ces unités sont px par défaut. Elles ne sont pas
nécessairement les mêmes (juste pour donner un exemple : l'une peut être en cm et l'autre en px).
</simpara>
<simpara>
<function>setcookie</function> et <function>setrawcookie</function> supportent désormais la
clé <literal>"partitioned"</literal>.
<!-- RFC: https://wiki.php.net/rfc/CHIPS -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.uri">
<title>URI</title>
<simpara>
Une extension uri toujours activée a été ajoutée et peut être utilisée pour gérer
les URI et les URL conformément à la RFC 3986 et à WHATWG URL.
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.xsl">
<title>XSL</title>
<simpara>
L'argument <parameter>$namespace</parameter> de <methodname>XSLTProcessor::getParameter</methodname>,
<methodname>XSLTProcessor::setParameter</methodname> et
<methodname>XSLTProcessor::removeParameter</methodname> fonctionne désormais réellement
au lieu d'être traité comme vide.
Cela ne fonctionne que si l'argument <parameter>$name</parameter> n'utilise pas la notation Clark et n'est pas un
QName car dans ces cas, l'espace de noms est pris à partir de l'href ou du préfixe de l'espace
de noms respectivement.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.zlib">
<title>Zlib</title>
<simpara>
<function>flock</function> est désormais pris en charge sur les flux zlib. Auparavant,
cela échouait toujours à effectuer toute action de verrouillage.
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.new-functions">
<title>Nouvelles Fonctions</title>
<sect2 xml:id="migration85.new-functions.core">
<title>Core</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/get-error-exception-handler -->
<!-- RFC: https://wiki.php.net/rfc/get-error-exception-handler -->
<member><function>get_error_handler</function></member>
<member><function>get_exception_handler</function></member>
<member>
<methodname>Closure::getCurrent</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.curl">
<title>Curl</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
<member><function>curl_multi_get_handles</function></member>
<member><function>curl_share_init_persistent</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.dom">
<title>DOM</title>
<simplelist>
<member>
<methodname>Dom\Element::getElementsByClassName</methodname>
</member>
<member>
<methodname>Dom\Element::insertAdjacentHTML</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.enchant">
<title>Enchant</title>
<simplelist>
<member><function>enchant_dict_remove_from_session</function></member>
<member><function>enchant_dict_remove</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.intl">
<title>Intl</title>
<simplelist>
<member>
<methodname>Locale::isRightToLeft</methodname>
</member>
<member><function>locale_is_right_to_left</function></member>
<!-- RFC: https://wiki.php.net/rfc/grapheme_levenshtein -->
<member><function>grapheme_levenshtein</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.opcache">
<title>Opcache</title>
<simplelist>
<member><function>opcache_is_script_cached_in_file_cache</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.pdo-sqlite">
<title>PDO_SQLITE</title>
<simplelist>
<member>
<methodname>Pdo\Sqlite::setAuthorizer</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.pgsql">
<title>PGSQL</title>
<simplelist>
<member><function>pg_close_stmt</function></member>
<member><function>pg_service</function></member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.reflection">
<title>Reflection</title>
<simplelist>
<member>
<methodname>ReflectionConstant::getFileName</methodname>
</member>
<member>
<methodname>ReflectionConstant::getExtension</methodname>
</member>
<member>
<methodname>ReflectionConstant::getExtensionName</methodname>
</member>
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
<member>
<methodname>ReflectionConstant::getAttributes</methodname>
</member>
<member>
<methodname>ReflectionProperty::getMangledName</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.sqlite">
<title>Sqlite</title>
<simplelist>
<member>
<methodname>Sqlite3Stmt::busy</methodname>
</member>
</simplelist>
</sect2>
<sect2 xml:id="migration85.new-functions.standard">
<title>Standard</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/array_first_last -->
<member><function>array_first</function></member>
<member><function>array_last</function></member>
</simplelist>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,628 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.other-changes">
<title>Autres changements</title>
<sect2 xml:id="migration85.other-changes.core">
<title>Core changes</title>
<sect3 xml:id="migration85.other-changes.core.core">
<title>Core</title>
<simpara>
Le minuteur haute résolution (<function>hrtime</function>) sur macOS
utilise désormais l'API recommandée
<code>clock_gettime_nsec_np(CLOCK_UPTIME_RAW)</code> au lieu de
<code>mach_absolute_time()</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.core.cgi-cli">
<title>CGI/CLI</title>
<simpara>
L'option <option>-z</option> ou <option>--zend-extension</option>
a été supprimée car elle n'était pas fonctionnelle.
Utilisez plutôt <option>-d zend_extension=[chemin]</option>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.core.pdo-odbc">
<title>PDO_ODBC</title>
<simpara>
Le comportement de récupération pour les colonnes plus grandes a été modifié. Plutôt que
de récupérer des blocs de 256 octets, PDO_ODBC essaiera de récupérer une taille de bloc plus grande ;
actuellement, il s'agit de la taille de la page moins la surcharge de la chaîne. Les pilotes qui
renvoient SQL_NO_TOTAL dans SQLGetData sont également mieux gérés.
Cela devrait améliorer la compatibilité et les performances.
<!-- See: GH-10809, GH-10733 -->
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.sapi">
<title>Changements dans les modules SAPI</title>
<sect3 xml:id="migration85.other-changes.sapi.cli">
<title>CLI</title>
<simpara>
Tenter de définir un titre de processus trop long avec
<function>cli_set_process_title</function> échouera désormais au lieu de
tronquer silencieusement le titre donné.
</simpara>
<simpara>
Une nouvelle option <option>--ini=diff</option> a été ajoutée pour afficher les paramètres INI
modifiés par rapport à la valeur par défaut intégrée.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.sapi.fpm">
<title>FPM</title>
<simpara>
FPM avec httpd ProxyPass décode éventuellement le chemin complet du script. Ajout du paramètre INI
<!-- <link linkend="ini.fastcgi.script_path_encoded"-->fastcgi.script_path_encoded<!-- </link> -->
pour empêcher ce nouveau comportement.
</simpara>
<simpara>
La limite du journal d'accès FPM respecte désormais la valeur de <link linkend="log-limit">log_limit</link>.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.functions">
<title>Fonctions modifiées</title>
<sect3 xml:id="migration85.other-changes.functions.intl">
<title>Intl</title>
<simpara>
<function>grapheme_extract</function> assigne correctement la valeur
<parameter>$next</parameter> lorsqu'il saute des octets de départ invalides.
Auparavant, il y avait des cas où il pointait vers le début de la
limite du grapheme au lieu de la fin.
</simpara>
<simpara>
<function>transliterator_get_error_code</function>,
<function>transliterator_get_error_message</function>,
<methodname>TransLiterator::getErrorCode</methodname>,
et <methodname>TransLiterator::getErrorMessage</methodname>
ne renvoient plus &false;? Renvoyer &false;
n'était en fait jamais possible.
</simpara>
<simpara>
Les fonctions suivantes supportent désormais un argument <parameter>$locale</parameter> :
<function>grapheme_strpos</function>,
<function>grapheme_stripos</function>,
<function>grapheme_strrpos</function>,
<function>grapheme_strripos</function>,
<function>grapheme_substr</function>,
<function>grapheme_strstr</function> et
<function>grapheme_stristr</function>
<!-- RFC: https://wiki.php.net/rfc/grapheme_add_locale_for_case_insensitive -->
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.ldap">
<title>LDAP</title>
<simpara>
<function>ldap_get_option</function> accepte désormais une connexion &null;,
comme <function>ldap_set_option</function>, pour permettre la récupération des
options globales.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.libxml">
<title>libxml</title>
<simpara>
<function>libxml_set_external_entity_loader</function> a désormais un type de retour
formel de <type>true</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.openssl">
<title>OpenSSL</title>
<simpara>
<function>openssl_public_encrypt</function> et
<function>openssl_private_decrypt</function> ont un nouveau paramètre
<parameter>$digest_algo</parameter> qui permet de spécifier l'algorithme
de hachage pour le padding OAEP.
</simpara>
<simpara>
<function>openssl_sign</function> et <function>openssl_verify</function>
ont un nouveau paramètre <parameter>$padding</parameter> pour permettre l'utilisation d'un
padding RSA PSS plus sécurisé.
</simpara>
<simpara>
Le paramètre <parameter>$cipher_algo</parameter> de <function>openssl_cms_encrypt</function>
peut être une chaîne avec le nom du chiffrement.
Cela permet d'utiliser plus d'algorithmes, y compris les algorithmes de chiffrement
AES GCM pour les données enveloppées authentifiées.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pcntl">
<title>PCNTL</title>
<simpara>
<function>pcntl_exec</function> a désormais un type de retour formel de
<type>false</type>.
</simpara>
<simpara>
<function>pcntl_waitid</function> prend un argument supplémentaire resource_usage
pour recueillir diverses métriques spécifiques à la plateforme sur le processus enfant.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pdo-pgsql">
<title>PDO_PGSQL</title>
<simpara>
<methodname>Pdo\Pgsql::copyFromArray</methodname> supporte désormais les entrées de type <type>iterable</type>.
</simpara>
<simpara>
<methodname>Pdo\Pgsql::setAttribute</methodname> et
<methodname>Pdo\Pgsql::prepare</methodname> supportent la définition de
<constant>PDO::ATTR_PREFETCH</constant> à 0, ce qui active le mode de récupération paresseuse.
Dans ce mode, les instructions ne peuvent pas être exécutées en parallèle.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pgsql">
<title>PostgreSQL</title>
<simpara>
<function>pg_copy_from</function> supporte désormais les entrées de type <type>iterable</type>.
</simpara>
<simpara>
<function>pg_connect</function> vérifie si l'argument connection_string
contient un octet nul.
</simpara>
<simpara>
<function>pg_close_stmt</function> vérifie si l'argument statement_name
contient un octet nul.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.posix">
<title>POSIX</title>
<simpara>
<function>posix_ttyname</function> définit last_error à EBADF lorsqu'il rencontre
un descripteur de fichier invalide.
</simpara>
<simpara>
<function>posix_isatty</function> génère un message <constant>E_WARNING</constant>
lorsqu'il rencontre un descripteur de fichier invalide.
</simpara>
<simpara>
<function>posix_fpathconf</function> vérifie les descripteurs de fichiers invalides et
définit last_error à EBADF et génère un <constant>E_WARNING</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.reflection">
<title>Reflection</title>
<simpara>
La sortie de <methodname>ReflectionClass::__toString</methodname> pour
les enums a changé pour mieux indiquer que la classe est un enum, et que
les cas d'enum sont des cas d'enum plutôt que des constantes de classe normales.
</simpara>
<simpara>
La sortie de <methodname>ReflectionProperty::__toString</methodname> pour
les propriétés avec hooks a changé pour indiquer quels hooks la propriété possède,
que ces hooks soit finals, et si la propriété est virtuelle.
Cela affecte également la sortie de <methodname>ReflectionClass::__toString</methodname>
lorsqu'une classe contient des propriétés avec hooks.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.sockets">
<title>Sockets</title>
<simpara>
<function>socket_create</function>/<function>socket_bind</function> peuvent
créer des sockets de la famille <constant>AF_PACKET</constant>.
</simpara>
<simpara>
<function>socket_getsockname</function> obtient l'index de l'interface et sa
représentation sous forme de chaîne avec un socket <constant>AF_PACKET</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.zlib">
<title>Zlib</title>
<simpara>
L'arguement <parameter>$use_include_path</parameter> des fonctions
<function>gzfile</function>, <function>gzopen</function> et
<function>readgzfile</function> a été changé
de <type>int</type> à <type>boolean</type>.
</simpara>
<simpara>
Les fonctions <function>gzfile</function>,
<function>gzopen</function> et <function>readgzfile</function> ont désormais
le comportement attendu avec le contexte de flux par défaut.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.extensions">
<title>Autres changements aux l'extensions</title>
<sect3 xml:id="migration85.other-changes.extensions.curl">
<title>cURL</title>
<simpara>
<function>curl_setopt</function> avec la valeur d'option
<constant>CURLOPT_FOLLOWLOCATION</constant>
n'est plus traitée comme un booléen mais comme un entier pour gérer
<constant>CURLFOLLOW_OBEYCODE</constant> et
<constant>CURLFOLLOW_FIRSTONLY</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.fileinfo">
<title>Fileinfo</title>
<simpara>
Mise à jour de file de 5.45 à 5.46.
</simpara>
<simpara>
Le type de retour de <function>finfo_open</function> a été changé en
<type>finfo</type> au lieu de <type>resource</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.intl">
<title>Intl</title>
<simpara>
Le mécanisme d'erreur interne d'Intl a été modernisé pour indiquer plus précisément
quel site d'appel a causé quelle erreur.
De plus, certaines exceptions ext/date ont été encapsulées dans une
<classname>IntlException</classname> maintenant.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.lexbor">
<title>Lexbor</title>
<simpara>
Une extension lexbor toujours activée a été ajoutée. Elle contient la bibliothèque
lexbor qui a été séparée de <link linkend="book.dom">ext/dom</link>
pour être réutilisée parmi d'autres extensions.
La nouvelle extension n'est pas directement exposée à l'espace utilisateur.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.opcache">
<title>Opcache</title>
<simpara>
L'<link linkend="book.opcache">extension Opcache</link> est désormais toujours
construite dans le binaire PHP et est toujours chargée.
Les directives INI <link linkend="ini.opcache.enable">opcache.enable</link>
et <link linkend="ini.opcache.enable-cli">opcache.enable_cli</link> sont
toujours respectées.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.pcre">
<title>PCRE</title>
<simpara>
Mise à jour de pcre2lib de 10.44 à 10.46.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.pdo-sqlite">
<title>PDO_Sqlite</title>
<simpara>
Mise à jour de la version minimale prise en charge de 3.7.7 à 3.7.17.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.readline">
<title>Readline</title>
<simpara>
Les types de retour de <function>readline_add_history</function>,
<function>readline_clear_history</function>,
et <function>readline_callback_handler_install</function> ont été
changés en <type>true</type>, plutôt que <type>bool</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.reflection">
<title>Reflection</title>
<simpara>
<classname>ReflectionConstant</classname> n'est plus finale.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.ini">
<title>Changements dans la gestion des fichiers INI</title>
<sect3 xml:id="migration85.other-changes.ini.core">
<title>Core</title>
<simpara>
Ajout de fatal_error_backtraces pour contrôler si les erreurs fatales doivent inclure
une trace.
<!-- RFC: https://wiki.php.net/rfc/error_backtraces_v2 -->
</simpara>
<simpara>
Ajout de la directive INI max_memory_limit, disponible uniquement au démarrage, pour contrôler la valeur maximale
de memory_limit pouvant être configurée au démarrage ou à l'exécution. Dépasser cette
valeur émet un avertissement, sauf si elle est définie à -1, et définit memory_limit sur la
valeur actuelle de max_memory_limit à la place.
<!-- ML discussion: https://externals.io/message/127108 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.ini.opcache">
<title>Opcache</title>
<simpara>
Ajout de opcache.file_cache_read_only pour prendre en charge un répertoire
<link linkend="ini.opcache.file-cache">opcache.file_cache</link> en lecture seule,
pour une utilisation avec des systèmes de fichiers en lecture seule (par exemple, des conteneurs Docker en lecture seule).
À utiliser de préférence avec <literal>opcache.validate_timestamps=0</literal>,
<literal>opcache.enable_file_override=1</literal>,
et <literal>opcache.file_cache_consistency_checks=0</literal>.
</simpara>
<note>
<simpara>
Un cache généré avec une version différente de PHP, un chemin de fichier différent,
ou des paramètres différents (y compris les extensions chargées), peut être
ignoré.
</simpara>
</note>
<simpara>
La valeur par défaut de
<link linkend="ini.opcache.jit-hot-loop">opcache.jit_hot_loop</link> est
désormais 61 (un nombre premier) pour éviter qu'elle soit un multiple du nombre
d'itérations de boucle.
Il est recommandé que ce paramètre soit défini sur un nombre premier.
</simpara>
<simpara>
La modification de <link
linkend="ini.opcache.memory-consumption">opcache.memory_consumption</link>
lorsque la mémoire partagée OPcache est déjà configurée signalera désormais correctement un échec
au lieu de ne rien faire silencieusement et d'afficher des valeurs trompeuses dans PHPInfo.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.ini.openssl">
<title>OpenSSL</title>
<simpara>
Ajout de <!-- <link linkend="ini.openssl.libctx"-->openssl.libctx<!-- </link> -->
pour sélectionner le type de contexte de la bibliothèque OpenSSL.
Soit un libctx personnalisé pour chaque thread peut être utilisé, soit un seul
libctx global (par défaut) est utilisé.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.performance">
<title>Performance</title>
<sect3 xml:id="migration85.other-changes.performance.core">
<title>Core</title>
<simpara>
Suppression des OPcodes pour les comparaisons d'identité avec des booléens, en particulier
pour le modèle <code>match(true)</code>.
</simpara>
<simpara>
Ajout de la spécialisation des OPcodes pour les comparaisons <code>=== []</code> et
<code>!== []</code>.
</simpara>
<simpara>
La création des objets exception est désormais beaucoup plus rapide.
</simpara>
<simpara>
Les parties du code qui utilisaient SSE2 ont été adaptées pour utiliser SIMD
avec ARM NEON également.
</simpara>
<simpara>
Introduction de la machine virtuelle TAILCALL, activée par défaut lors de la compilation avec Clang>=19
sur x86_64 ou aarch64. La machine virtuelle TAILCALL est aussi rapide que la machine virtuelle HYBRID utilisée lors
de la compilation avec GCC. Cela rend les binaires PHP construits avec Clang>=19 aussi rapides que
les binaires construits avec GCC. Les performances de la machine virtuelle CALL, utilisée avec d'autres
compilateurs, se sont également considérablement améliorées.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.intl">
<title>Intl</title>
<simpara>
Désormais ne créer plus de copies de chaînes supplémentaires lors de la conversion
des chaînes pour une utilisation dans le collateur.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.mbstring">
<title>MBString</title>
<simpara>
Les parties du code qui utilisaient SSE2 ont été adaptées pour utiliser SIMD
avec ARM NEON également.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.opcache">
<title>Opcache</title>
<simpara>
Augmentation des performances de l'accès aux variables TLS dans le code JITé
dans les builds Glibc.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.reflection">
<title>Reflection</title>
<para>
Augmentation des performances des méthodes suivantes :
<simplelist>
<member><methodname>ReflectionProperty::getValue</methodname></member>
<member><methodname>ReflectionProperty::getRawValue</methodname></member>
<member><methodname>ReflectionProperty::isInitialized</methodname></member>
<member><methodname>ReflectionProperty::isInitialized</methodname></member>
<member><methodname>ReflectionProperty::setValue</methodname></member>
<member><methodname>ReflectionProperty::setRawValue</methodname></member>
</simplelist>
</para>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.spl">
<title>SPL</title>
<simpara>
Augmentation des performances des accesseurs de dimensions et des méthodes de
<classname>SplFixedArray</classname>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.standard">
<title>Standard</title>
<simpara>
Augmentation des performances des fonctions de tableau avec des callbacks
(<function>array_find</function>, <function>array_filter</function>,
<function>array_map</function>, <function>usort</function>, ...).
</simpara>
<simpara>
Augmentation des performances de <function>urlencode</function> et
<function>rawurlencode</function>.
</simpara>
<simpara>
Augmentation des performances de <function>unpack</function> avec des répétitions anonymes
en évitant de créer des chaînes temporaires et de les reparcourir.
</simpara>
<simpara>
Augmentation des performances de <function>pack</function>.
</simpara>
<simpara>
Augmentation mineure des performances de <function>array_chunk</function>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.xml">
<title>XML</title>
<simpara>
Augmentation des performances de l'accès aux propriétés de <classname>XMLReader</classname>.
</simpara>
<simpara>
Augmentation des performances de <classname>XMLWriter</classname> et réduction de
la consommation mémoire.
</simpara>
</sect3>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration85.windows-support">
<title>Support de Windows</title>
<sect2 xml:id="migration85.windows-support.core">
<title>Core</title>
<simpara>
Les variables de configuration <constant>PHP_VERSION</constant>,
<constant>PHP_MINOR_VERSION</constant>, et
<constant>PHP_RELEASE_VERSION</constant> sont désormais tout le temps numériques.
Auparavant, elles étaient des chaînes pour les builds buildconf.
</simpara>
<simpara>
Les constructions <command>phpize</command> reflètent désormais l'arborescence
source dans le répertoire de construction (comme cela fonctionnait déjà pour les
constructions in-tree) ; certaines constructions d'extensions (en particulier
lors de l'utilisation de Makefile.frag.w32) peuvent nécessiter des ajustements.
</simpara>
<simpara>
<option role="configure">--enable-sanitizer</option> est désormais disponible
pour les constructions MSVC. Cela active l'ASan et les assertions de débogage,
et est supporté à partir de MSVC 16.10 et Windows 10.
</simpara>
<simpara>
L'option de configuration <option role="configure">--with-uncritical-warn-choke</option>
pour les constructions clang n'est plus prise en charge.
Sélectionnez les avertissements à supprimer via CFLAGS à la place.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.com">
<title>COM</title>
<simpara>
L'extension est désormais construite en tant qu'extension partagée par défaut ; auparavant, elle était construite
en tant qu'extension statique, bien que les binaires officiels
Windows construisaient une extension partagée.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.ffi">
<title>FFI</title>
<simpara>
Il n'est plus nécessaire de spécifier la bibliothèque lors de l'utilisation de
<methodname>FFI::cdef</methodname> et <methodname>FFI::load</methodname>.
Cependant, cette fonctionnalité de commodité ne doit pas être utilisée en production.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.streams">
<title>Streams</title>
<simpara>
Si seules des flux de type pipe sont contenus dans le tableau <parameter>$read</parameter>,
et que les tableaux <parameter>$write</parameter> et
<parameter>$except</parameter> sont vides,
<function>stream_select</function> se comporte désormais de manière similaire aux systèmes POSIX,
c'est-à-dire que la fonction ne retourne que si au moins un pipe est prêt à être lu,
ou après l'expiration du délai d'attente.
Auparavant, <function>stream_select</function> retournait immédiatement,
signalant que tous les flux étaient prêts à être lus.
</simpara>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->