1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-23 23:12:09 +01:00

Add PHP 8.5 migration guide (#313)

* Add PHP 8.5 migration guide (not completed)

* Migrations text consistency

* Fix white-space

* Add PHP 8.5 migration guide

* Migrations text consistency

* PHP 8.5 deprecations: remove output handler return deprecation
This commit is contained in:
Marcos Porto Mariño
2025-11-13 00:15:04 +01:00
committed by GitHub
parent 668fe72be5
commit 73882af785
47 changed files with 2894 additions and 86 deletions

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes Maintainer: pmartin -->
<sect1 xml:id="migration56.incompatible">
<title>Modificaciones que causan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
<simpara>
Aunque la mayoría del código PHP 5 existente debería funcionar sin ninguna
modificación, debe tener en cuenta algunas incompatibilidades ascendentes:

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes Maintainer: girgias -->
<sect1 xml:id="migration56.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration56.new-features.const-scalar-exprs">
<title>Expresiones de constante</title>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes Maintainer: girgias -->
<sect1 xml:id="migration70.incompatible">
<title>Cambios que provocan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
&appendices.migration70.incompatible.error-handling;
&appendices.migration70.incompatible.variable-handling;

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes Maintainer: Marqitos -->
<sect1 xml:id="migration70.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration70.new-features.scalar-type-declarations">
<title>Declaraciones de tipo escalar</title>

View File

@@ -4,21 +4,21 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration71.deprecated">
<title>Características obsoletas en PHP 7.1.x</title>
<title>Funcionalidades obsoletas en PHP 7.1.x</title>
<sect2 xml:id="migration71.deprecated.ext-mcrypt">
<title>ext/mcrypt</title>
<para>
La extensión mcrypt fue declarada «abandonware» hace casi una década, y también
era bastante compleja de utilizar. Por tanto, está obsoleta en favor de
OpenSSL, y será eliminada del núcleo y puesta en PECL en PHP 7.2.
</para>
</sect2>
<sect2 xml:id="migration71.deprecated.eval-option-for-mb-ereg-replace">
<title>Opción 'eval' para <function>mb_ereg_replace</function> y <function>mb_eregi_replace</function></title>
<para>
El modificador de patrón <literal>e</literal> está obsoleto para las funciones
<function>mb_ereg_replace</function> y

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: 19e8122137a1d42ed60f17fe2c0c2b69b0b2d16b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration71.incompatible">
<title>Modificaciones que causan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration71.incompatible.too-few-arguments-exception">
<title>Excepción al pasar muy pocos argumentos de función</title>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes Maintainer: PhilDaiguille -->
<sect1 xml:id="migration71.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration71.new-features.nullable-types">
<title>Tipo nullable</title>

View File

@@ -5,10 +5,10 @@
<sect1 xml:id="migration71.new-functions">
<title>Nuevas funciones</title>
<sect2 xml:id="migration71.new-functions.core">
<title>Núcleo de PHP</title>
<itemizedlist>
<listitem>
<simpara>
@@ -32,10 +32,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.closure">
<title><link linkend="class.closure">Closure</link></title>
<itemizedlist>
<listitem>
<simpara>
@@ -44,10 +44,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.curl">
<title><link linkend="book.curl">CURL</link></title>
<itemizedlist>
<listitem>
<simpara>
@@ -66,10 +66,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.openssl">
<title><link linkend="book.openssl">OpenSSL</link></title>
<itemizedlist>
<listitem>
<simpara>
@@ -78,10 +78,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.session">
<title><link linkend="book.session">Session</link></title>
<itemizedlist>
<listitem>
<simpara>
@@ -95,10 +95,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.spl">
<title><link linkend="book.spl">SPL</link></title>
<itemizedlist>
<listitem>
<simpara>
@@ -107,10 +107,10 @@
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="migration71.new-functions.pcntl">
<title><link linkend="book.pcntl">PCNTL</link></title>
<itemizedlist>
<listitem>
<simpara>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration71.windows-support" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Soporte Windows</title>
<title>Soporte para Windows</title>
<sect2 xml:id="migration71.windows-support.long-and-utf8-path">
<title>Soporte para rutas largas y UTF-8</title>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: yes -->
<sect1 xml:id="migration72.deprecated">
<title>Características obsoletas en PHP 7.2.x</title>
<title>Funcionalidades obsoletas en PHP 7.2.x</title>
<sect2 xml:id="migration72.deprecated.unquoted-strings">
<title>Cadenas sin entrecomillar</title>
@@ -137,7 +137,7 @@ string(11) "INEXISTENTE"
<title>Función <function>each</function></title>
<para>
Esta función es mucho más lenta iterando que un
Esta función es mucho más lenta iterando que un
<literal>foreach</literal> normal, y causa problemas de implementación con algunos
cambios del lenguaje. Ha sido por tanto marcada como obsoleta.
</para>
@@ -148,7 +148,7 @@ string(11) "INEXISTENTE"
<para>
Usar <function>assert</function> con una cadena como argumento requería que la cadena
fuera <function>eval</function>uada. Debido al potencial para ejecución remota
fuera <function>eval</function>uada. Debido al potencial para ejecución remota
de código, el uso de <function>assert</function> con una cadena como argumento ha sido
marcado como obsoleto en favor del uso de expresiones booleanas.
</para>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration73.deprecated">
<title>Características obsoletas</title>
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration73.deprecated.core">
<title>Núcleo PHP</title>
@@ -24,8 +24,8 @@
<para>
Declarando una función llamada <literal>assert()</literal> dentro de un espacio
de nombres es obsoleto. La función <function>assert</function> está sujeta a un manejo
especial por parte del motor, lo que puede dar lugar a un comportamiento inconsistente al definir una
de nombres es obsoleto. La función <function>assert</function> está sujeta a un manejo
especial por parte del motor, lo que puede dar lugar a un comportamiento inconsistente al definir una
función con el mismo nombre.
</para>
</sect3>
@@ -119,46 +119,46 @@
en su lugar.
<itemizedlist>
<listitem>
<simpara><function>mbregex_encoding</function></simpara>
<simpara><function>mbregex_encoding</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg</function></simpara>
<simpara><function>mbereg</function></simpara>
</listitem>
<listitem>
<simpara><function>mberegi</function></simpara>
<simpara><function>mberegi</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_replace</function></simpara>
<simpara><function>mbereg_replace</function></simpara>
</listitem>
<listitem>
<simpara><function>mberegi_replace</function></simpara>
<simpara><function>mberegi_replace</function></simpara>
</listitem>
<listitem>
<simpara><function>mbsplit</function></simpara>
<simpara><function>mbsplit</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_match</function></simpara>
<simpara><function>mbereg_match</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search</function></simpara>
<simpara><function>mbereg_search</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_pos</function></simpara>
<simpara><function>mbereg_search_pos</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_regs</function></simpara>
<simpara><function>mbereg_search_regs</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_init</function></simpara>
<simpara><function>mbereg_search_init</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_getregs</function></simpara>
<simpara><function>mbereg_search_getregs</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_getpos</function></simpara>
<simpara><function>mbereg_search_getpos</function></simpara>
</listitem>
<listitem>
<simpara><function>mbereg_search_setpos</function></simpara>
<simpara><function>mbereg_search_setpos</function></simpara>
</listitem>
</itemizedlist>
</para>
@@ -170,7 +170,7 @@
<para>
La configuración ini <link
linkend="ini.pdo-odbc.db2-instance-name">pdo_odbc.db2_instance_name</link>
ha sido formalmente desaprobada. Está obsoleto en la documentación
ha sido formalmente desaprobada. Está obsoleto en la documentación
a partir de PHP 5.1.1.
</para>
</sect2>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration73.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Modificaciones que causan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration73.incompatible.core">
<title>Núcleo de PHP</title>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration73.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration73.new-features.core">
<title>Núcleo de PHP</title>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration73.windows-support" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Soporte de Windows</title>
<title>Soporte para Windows</title>
<sect2 xml:id="migration73.windows-support.core">
<title>Núcleo PHP</title>

View File

@@ -2,10 +2,10 @@
<!-- EN-Revision: c308ed37a98decb1959ed47dc149a43d6c71ec60 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration74.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Modificaciones que causan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration74.incompatible.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration74.incompatible.core.non-array-access">
<title>Acceso de tipo array a no-arrays</title>

View File

@@ -3,7 +3,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration74.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration74.new-features.core">
<title>Núcleo de PHP</title>

View File

@@ -17,7 +17,7 @@
<simpara>
<link linkend="book.ibase">Firebird/Interbase</link>
- el acceso a una base de datos basada en InterBase y/o Firebird sigue siendo
con el driver PDO Firebird.
con el driver PDO Firebird.
</simpara>
</listitem>
<listitem>

View File

@@ -4,7 +4,7 @@
<!-- Reviewed: no -->
<sect1 xml:id="migration74.windows-support" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Gestión de Windows</title>
<title>Soporte para Windows</title>
<sect2 xml:id="migration74.windows-support.configure">
<title>Flags <command>configure</command></title>

View File

@@ -3,7 +3,7 @@
<!-- EN-Revision: ca9dbbbd2dcac26d56bbbb87539297e4589bd709 Maintainer: julionc Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration80.deprecated">
<title>Características obsoletas</title>
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration80.deprecated.core">
<title>Núcleo PHP</title>

View File

@@ -6,7 +6,7 @@
<title>Nuevas características</title>
<sect2 xml:id="migration80.new-features.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration80.new-features.core.named-arguments">
<title>Argumentos nombrados</title>

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: f164f8c8627d55910084c94e1dcea93b4a57c4a3 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration81.deprecated">
<title>Funcionalidades Depreciadas</title>
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration81.deprecated.core">
<title>Núcleo de PHP</title>

View File

@@ -5,7 +5,7 @@
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration81.incompatible.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration81.incompatible.core.globals-access">
<title>Restricciones de acceso a $GLOBALS</title>

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: 161dde4fe721309398dd324edbf02aec409f127b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<sect1 xml:id="migration81.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas Funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration81.new-features.core">
<title>Núcleo de PHP</title>

View File

@@ -5,7 +5,7 @@
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration82.deprecated.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration82.deprecated.core.dynamic-properties">
<title>Uso de propiedades dinámicas</title>

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: 763b31ef61c2aceb779c333c4577d669bf63ea48 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<sect1 xml:id="migration82.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Modificaciones que causan incompatibilidad ascendente</title>
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration82.incompatible.date">
<title>Fecha</title>

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: 681fd84dbdef6c0f8fe92848677d95a993b66143 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration82.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas Funcionalidades</title>
<title>Nuevas características</title>
<sect2 xml:id="migration82.new-features.core">
<title>Núcleo de PHP</title>

View File

@@ -2,10 +2,10 @@
<!-- EN-Revision: 9c828621cbce488cf6306b21c39e208f847eabd5 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration83.deprecated" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Deprecación de funciones</title>
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration83.deprecated.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration83.deprecated.core.saner-inc-dec-operators">
<title>Operadores de incremento/decremento más seguros</title>

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: a989e5f21db7902c0028ad51e9adc94024d13216 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration83.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Cambios incompatibles</title>
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration83.incompatible.core">
<title>Núcleo de PHP</title>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 617b58b308d1f1916efaa4a3eb158fed251ae439 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<!-- Reviewed: No Maintainer: Marqitos -->
<sect1 xml:id="migration83.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas características</title>
<sect2 xml:id="migration83.new-features.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration83.new-features.core.readonly-modifier-improvements">
<title>Modificación de solo lectura</title>

View File

@@ -5,7 +5,7 @@
<title>Soporte para Windows</title>
<sect2 xml:id="migration83.windows-support.core">
<title>Core</title>
<title>Núcleo</title>
<para>
El soporte mínimo para Windows se ha incrementado a Windows 8

View File

@@ -2,10 +2,10 @@
<!-- EN-Revision: e3fc9c49817a5249d1efb9c79c93307ecebf2f53 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration84.deprecated">
<title>Funcionalidades desaprobadas</title>
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration84.deprecated.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<sect3 xml:id="migration84.deprecated.core.implicitly-nullable-parameter">
<!-- RFC: https://wiki.php.net/rfc/deprecate-implicitly-nullable-types -->

View File

@@ -2,7 +2,7 @@
<!-- EN-Revision: 64dc79d6c9710dddf196aa28e3c5f63b562e7aef Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration84.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Cambios no retrocompatibles</title>
<title>Cambios incompatibles con versiones anteriores</title>
<simpara>
Salvo mención contraria en esta sección,
@@ -13,7 +13,7 @@
</simpara>
<sect2 xml:id="migration84.incompatible.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<!-- RFC: https://wiki.php.net/rfc/exit-as-function -->
<sect3 xml:id="migration84.incompatible.core.exit">

View File

@@ -5,7 +5,7 @@
<title>Nuevas clases, enumeraciones e interfaces</title>
<sect2 xml:id="migration84.new-classes.core">
<title>Core</title>
<title>Núcleo</title>
<simplelist>
<member><classname>Deprecated</classname></member>
<member><classname>RequestParseBodyException</classname></member>
@@ -134,7 +134,7 @@
</sect2>
<sect2 xml:id="migration84.new-classes.standard">
<title>Standard</title>
<title>Estándar</title>
<simplelist>
<!-- Should this use <enumname> ? -->

View File

@@ -2,15 +2,15 @@
<!-- EN-Revision: 22583751fbfdaa3eaa41aeb6470d1343f5cb2c78 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration84.new-features">
<title>Nuevas Características</title>
<title>Nuevas características</title>
<!-- TODO: Características principales para 8.4 -->
<sect2 xml:id="migration84.new-features.core">
<title>PHP Core</title>
<title>Núcleo de PHP</title>
<!-- RFC: https://wiki.php.net/rfc/property-hooks -->
<sect3 xml:id="migration84.new-features.core.property-hooks">
<title>Property Hooks</title>
<title>Hooks de propiedad</title>
<simpara>
Las propiedades de los objetos pueden ahora tener lógica adicional asociada con sus
@@ -123,7 +123,7 @@ $object = $reflector->newLazyGhost($initializer);
<!-- RFC: https://wiki.php.net/rfc/deprecated_attribute -->
<sect3 xml:id="migration84.new-features.core.deprecated-attribute">
<title><code>#[\Deprecated]</code> attribute</title>
<title>Atributo <code>#[\Deprecated]</code></title>
<simpara>
El nuevo atributo <classname>Deprecated</classname> puede ser utilizado para marcar funciones, métodos,

View File

@@ -5,7 +5,7 @@
<title>Nuevas funciones</title>
<sect2 xml:id="migration84.new-functions.core">
<title>Core</title>
<title>Núcleo</title>
<simplelist>
<!-- RFC: https://wiki.php.net/rfc/rfc1867-non-post -->
@@ -27,7 +27,7 @@
</sect2>
<sect2 xml:id="migration84.new-functions.date">
<title>Date</title>
<title>Fecha</title>
<simplelist>
<member>
<methodname>DateTime::createFromTimestamp</methodname>
@@ -233,7 +233,7 @@
</sect2>
<sect2 xml:id="migration84.new-functions.standard">
<title>Standard</title>
<title>Estándar</title>
<simplelist>
<member><function>http_get_last_response_headers</function></member>

View File

@@ -5,7 +5,7 @@
<title>Otros cambios</title>
<sect2 xml:id="migration84.other-changes.core">
<title>Cambio en el núcleo</title>
<title>Cambios en el núcleo</title>
<sect3 xml:id="migration84.other-changes.core.closures">
<title>Clausuras</title>

View File

@@ -2,10 +2,10 @@
<!-- EN-Revision: d64e811eac61a5c7c744312d8bc6e2244de81488 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<sect1 xml:id="migration84.windows-support">
<title>Soporte Windows</title>
<title>Soporte para Windows</title>
<sect2 xml:id="migration84.windows-support.core">
<title>Core</title>
<title>Núcleo</title>
<simpara>
La compilación con Visual Studio ahora requiere al menos Visual Studio 2019.

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<appendix xml:id="migration85" xmlns="http://docbook.org/ns/docbook">
<title>Migración de PHP 8.4.x a PHP 8.5.x</title>
<simpara>
Esta nueva versión menor trae consigo una serie de
<link linkend="migration85.new-features">nuevas características</link> y
<link linkend="migration85.incompatible">algunas incompatibilidades</link>
que deben probarse antes de cambiar las versiones de PHP en entornos
de producción.
</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: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.constants">
<title>Nuevas constantes globales</title>
<sect2 xml:id="migration85.constants.core">
<title>Núcleo</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> (Solo FreeBSD)
</member>
<member>
<constant>TCP_FUNCTION_ALIAS</constant> (Solo FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA</constant> (Solo FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_NODOM</constant> (Solo FreeBSD)
</member>
<member>
<constant>TCP_REUSPORT_LB_NUMA_CURDOM</constant> (Solo FreeBSD)
</member>
<member>
<constant>TCP_BBR_ALGORITHM</constant> (Solo FreeBSD)
</member>
<member>
<constant>AF_PACKET</constant> (Solo Linux)
</member>
<member>
<constant>IP_BINDANY</constant> (Solo FreeBSD/NetBSD/OpenBSD)
</member>
<member>
<constant>SO_BUSY_POLL</constant> (Solo Linux)
</member>
<member>
<constant>UDP_SEGMENT</constant> (Solo Linux)
</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>Estándar</title>
<simplelist>
<member>
<constant>IMAGETYPE_SVG</constant>
cuando se carga libxml.
</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,525 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 2def8c3cfec11fcc74f153b337301bbc06c16bc9 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.deprecated">
<title>Funcionalidades obsoletas</title>
<sect2 xml:id="migration85.deprecated.core">
<title>Núcleo de PHP</title>
<sect3 xml:id="migration85.deprecated.core.changes-to-user-output-handler">
<title>Cambios en el controlador de salida del usuario</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_4 -->
<simpara>
Intentar generar salida (p. ej., con <function>echo</function>) dentro de
un controlador de salida de usuario está obsoleto.
La advertencia de obsolescencia omitirá el controlador que genera la salida para
garantizar su visibilidad; si existen controladores de salida anidados, se seguirá
utilizando el siguiente.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.non-canonical-cast-names">
<title>Nombres de conversiones no canónicos</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_non-standard_cast_names -->
<simpara>
Los nombres de conversiones no canónicos <literal>(boolean)</literal>,
<literal>(integer)</literal>, <literal>(double)</literal>,
y <literal>(binary)</literal> han quedado obsoletos,
use <literal>(bool)</literal>, <literal>(int)</literal>,
<literal>(float)</literal>, y <literal>(string)</literal> respectivamente.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.case-statements-with-semicolon">
<title>Finalizar las declaraciones de caso con un punto y coma</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_semicolon_after_case_in_switch_statement -->
<simpara>
Finalizar las sentencias case con un punto y coma en lugar de dos puntos,
se considera obsoleto.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.the-backtick-operator">
<title>El operador de ejecución</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">El operador de ejecución</link>
como un alias para <function>shell_exec</function> ha quedado obsoleto.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-null-from-debuginfo">
<title>Devolviendo null desde __debugInfo()</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_debuginfo_returning_null -->
<simpara>
Devolver &null; desde
<link linkend="language.oop5.magic.debuginfo">__debugInfo()</link>
ha quedado obsoleto. En su lugar, devuelva un array vacío.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.return-memleaks-ini-directive">
<title>Directiva INI report_memleaks</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_report_memleaks_ini_directive -->
<simpara>
La directiva INI <link linkend="ini.report-memleaks">report_memleaks</link>
ha quedado obsoleta.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.constant-redeclaration">
<title>Redeclaración de constantes</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_constant_redeclaration -->
<simpara>
La redeclaración de constantes está obsoleta.
Tenga en cuenta que esto ya generó una advertencia y seguirá haciéndolo.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.closure-binding-issues">
<title>Problemas de enlace de cierres</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_closure_binding_issues -->
<para>
Los siguientes problemas de enlace de cierre, que ya emiten un
<constant>E_WARNING</constant>, ahora están obsoletos:
<simplelist>
<member>Enlazar una instancia a un cierre estático.</member>
<member>Enlazar métodos a objetos que no son instancias de la clase
(o subclase) en la que se define el método.</member>
<member>Desenlazar $this de un método.</member>
<member>Desenlazar $this de un cierre que utiliza $this.</member>
<member>Enlazar un cierre al ámbito de una clase interna.</member>
<member>Reenlazar el ámbito de un cierre creado a partir de una función o método.</member>
</simplelist>
</para>
</sect3>
<sect3 xml:id="migration85.deprecated.core.sleep-and-wakeup-magic-methods">
<title>Métodos mágicos __sleep() y __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>
Los métodos mágicos<link linkend="object.sleep">__sleep()</link> y
<link linkend="object.wakeup">__wakeup()</link>
son ligeramente-obsoletos.
En su lugar, o al mismo tiempo si se requiere compatibilidad con PHP 7,
se deben usar los métodos mágicos
<link linkend="object.serialize">__serialize()</link> y
<link linkend="object.unserialize">__unserialize()</link>.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.using-null-as-an-array-offset">
<title>Usando null como índice de un array</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>
El uso de &null; como índice de un array o al llamar a <function>array_key_exists</function>
está obsoleto. En su lugar, debe utilizarse un string vacío.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.incrementing-non-numeric-strings">
<title>Incrementando strings no numéricos</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#enact_follow-up_phase_of_the_path_to_saner_incrementdecrement_operators_rfc -->
<simpara>
El incremento de strings no numéricos está obsoleto.
En su lugar, debe utilizarse la función <function>str_increment</function>.
</simpara>
</sect3>
<sect3 xml:id="migration85.deprecated.core.register-argc-argv-directive">
<title>Directiva INI register_argc_argv</title>
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_register_argc_argv_ini_directive -->
<simpara>
Usar <code>$_SERVER['argc']</code> y <code>$_SERVER['argv']</code>
a partir del string de consulta para las SAPI que no son de línea de comandos ha quedado obsoleto.
Configure <literal>register_argc_argv=0</literal> y utilice
<varname>$_GET</varname> o <code>$_SERVER['QUERY_STRING']</code>
para acceder a la información, tras verificar que su uso es seguro.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.deprecated.curl">
<title>cURL</title>
<simpara>
La función <function>curl_close</function> ha quedado obsoleta,
ya que los objetos <classname>CurlHandle</classname> se liberan automáticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_close -->
</simpara>
<simpara>
La función <function>curl_share_close</function> ha quedado obsoleta,
ya que los objetos <classname>CurlShareHandle</classname> se liberan automáticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_curl_share_close -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.date">
<title>Fecha</title>
<simpara>
Las constantes <constant>DATE_RFC7231</constant> y
<constant>DateTimeInterface::RFC7231</constant> han quedado obsoletas.
Esto se debe a que ignoran la zona horaria asociada y siempre utilizan 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 función <function>finfo_close</function> ha quedado obsoleta.
Los objetos <classname>finfo</classname> se liberan automáticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_finfo_close -->
</simpara>
<simpara>
El parámetro <parameter>$context</parameter> de la
función <function>finfo_buffer</function> ha quedado obsoleto
ya que se ignora.
<!-- 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 función <function>imagedestroy</function> ha quedado obsoleta,
ya que los objetos <classname>GdImage</classname> se liberan automáticamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_imagedestroy -->
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.hash">
<title>Hash</title>
<simpara>
Las constantes <constant>MHASH_<replaceable>*</replaceable></constant> han
quedado obsoletas.
</simpara>
</sect2>
<sect2 xml:id="migration85.deprecated.intl">
<title>Intl</title>
<simpara>
La configuración INI <link linkend="ini.intl.error-level">intl.error_level</link>
ha quedado obsoleta.
Se recomienda comprobar los errores manualmente o habilitar las excepciones
mediante la configuración 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>
Se han marcado como obsoletas ciertas llamadas y constantes de Oracle Instant Client.
Lista de llamadas afectadas:
<simplelist>
<member><function>ldap_connect</function> con soporte para billetera</member>
<member><function>ldap_connect_wallet</function></member>
</simplelist>
Lista de constantes afectadas:
<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>
La función alias <function>mysqli_execute</function> ha quedado obsoleta.
Utilice <function>mysqli_stmt_execute</function> en su lugar.
<!-- 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>
El parámetro <parameter>$key_length</parameter> de
<function>openssl_pkey_derive</function> ha quedado obsoleto.
Esto se debe a que se ignora o trunca la clave, lo que puede suponer
una vulnerabilidad de seguridad.
<!-- 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>
El esquema DSN <literal>"uri:"</literal> ha quedado obsoleto debido a problemas de seguridad relacionados con
los DSN procedentes de URI remotos.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_pdo_s_urischeme -->
</simpara>
<para>
Las constantes específicas del controlador en la clase PDO han quedado obsoletas.
Lista de constantes afectadas y sus reemplazos:
<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>
Los métodos específicos del controlador en la clase PDO han quedado obsoletos.
Lista de métodos afectados y sus reemplazos:
<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>
Las constantes relacionadas con los estados de las transacciones han quedado obsoletas ya que esta función no está disponible con 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>
Los métodos <code>setAccessible()</code> de varios objetos Reflection han quedado
obsoletos, ya que ya no tienen efecto.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionsetaccessible -->
</simpara>
<simpara>
Llamar a <methodname>ReflectionClass::getConstant</methodname> para constantes
que no existen ha quedado obsoleto.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_reflectionclassgetconstant_for_missing_constants -->
</simpara>
<simpara>
Llamar a <methodname>ReflectionProperty::getDefaultValue</methodname> para
propiedades sin valores predeterminados ha quedado obsoleto.
<!-- 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>
Anular el registro de todos los autocargadores pasando la
función <function>spl_autoload_call</function> como argumento de devolución de llamada a
<function>spl_autoload_unregister</function> ha quedado obsoleto.
En su lugar, si es necesario, se debe iterar sobre el valor devuelto por
<function>spl_autoload_functions</function> y llamar a
<function>spl_autoload_unregister</function> en cada valor.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_spl_autoload_call_to_spl_autoload_unregister -->
</simpara>
<simpara>
Los métodos <methodname>SplObjectStorage::contains</methodname>,
<methodname>SplObjectStorage::attach</methodname> y
<methodname>SplObjectStorage::detach</methodname> han quedado obsoletos
y se han sustituido por <methodname>SplObjectStorage::offsetExists</methodname>,
<methodname>SplObjectStorage::offsetSet</methodname> y
<methodname>SplObjectStorage::offsetUnset</methodname>, respectivamente.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_splobjectstoragecontains_splobjectstorageattach_and_splobjectstoragedetach -->
</simpara>
<simpara>
El uso de <classname>ArrayObject</classname> y
<classname>ArrayIterator</classname> con objetos ha quedado obsoleto.
<!-- 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>Estándar</title>
<simpara>
La función alias <function>socket_set_timeout</function> ha quedado obsoleta.
Utilice <function>stream_set_timeout</function> en su lugar.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#formally_deprecate_socket_set_timeout -->
</simpara>
<simpara>
Pasar &null; a <function>readdir</function>,
<function>rewinddir</function> y <function>closedir</function>
para usar el último directorio abierto ha quedado obsoleto.
En su lugar, proporcione explícitamente el último directorio abierto.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_null_to_readdir_rewinddir_and_closedir -->
</simpara>
<simpara>
Pasar enteros fuera del intervalo <literal>[0, 255]</literal> a <function>chr</function>
está obsoleto.
Esto se debe a que un byte solo puede contener un valor dentro de este intervalo.
<!-- RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_passing_integers_outside_the_interval_0_255_to_chr -->
</simpara>
<simpara>
Pasar un string que no sea un solo byte a <function>ord</function>
ahora está obsoleto, esto es indicativo de un error.
<!-- 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 predefinida localmente
<link linkend="reserved.variables.httpresponseheader">$http_response_header</link>
está obsoleta. En su lugar, se debe llamar a
la función <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 función <function>xml_parser_free</function> ha quedado obsoleta,
ya que los objetos <classname>XMLParser</classname> se liberan automáticamente.
<!-- 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,589 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Cambios incompatibles con versiones anteriores</title>
<sect2 xml:id="migration85.incompatible.core">
<title>Núcleo de PHP</title>
<sect3 xml:id="migration85.incompatible.core.array-callable-alias">
<title>Nombres de alias <literal>"array"</literal> y <literal>"callable"</literal></title>
<simpara>
Ya no es posible utilizar <literal>"array"</literal>
y <literal>"callable"</literal> como nombres de alias de clase
en <function>class_alias</function>
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.loosely-comparing-object">
<title>Comparación imprecisa de objetos incomparables</title>
<simpara>
Anteriormente, la comparación imprecisa de objetos no comparables (p. ej., enumeraciones,
<classname>CurlHandle</classname> y otras clases internas) con valores booleanos
era inconsistente. Si se comparaba con un literal booleano
<code>$object == true</code>, se comportaba igual que
<code>(bool)$object</code>. Si se comparaba con un valor estáticamente desconocido
<code>$object == $true</code>, siempre devolvía &false;.
Este comportamiento se unificó para que siempre se ajustara al de
<code>(bool)$object</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.gc-collect-cycles">
<title>Valor de retorno de gc_collect_cycles</title>
<simpara>
El valor de retorno de <function>gc_collect_cycles</function> ya no incluye
strings y recursos que se recopilaron indirectamente a través de ciclos.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.substitute-final-subclasses">
<title>Sustituir la palabra clave static en la subclase final</title>
<simpara>
Ahora está permitido sustituir <type>static</type> por <type>self</type> o el nombre de clase concreto
en las subclases finales.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.tick-handlers">
<title>Controladores de ticks</title>
<simpara>
Los controladores de ticks ahora se desactivan después de todas las funciones de apagado,
los destructores se hayan ejecutado, y se hayan limpiado los controladores de salida.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.trait-binding">
<title>Enlace de rasgos</title>
<simpara>
Ahora, los rasgos se vinculan antes que la clase padre. Este es un cambio de comportamiento
sutil, pero debería ajustarse mejor a las expectativas de los usuarios.
<!-- https://github.com/php/php-src/pull/15878 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.errors-compilation-and-linking">
<title>Errores durante la compilación y el enlace de clases</title>
<simpara>
Los errores que se producen durante la compilación y el enlazado de clases ahora se procesan siempre
después de la compilación o el enlazado. Los errores fatales que se producen durante
la compilación o el enlazado de clases provocan que cualquier error retrasado se procese
inmediatamente, sin llamar a los controladores de errores definidos por el usuario.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.exception-by-userdefined-handler">
<title>Excepciones generadas por el controlador de errores definido por el usuario</title>
<simpara>
Las excepciones generadas por los controladores de errores definidos por el usuario al manejar errores de
enlace de clases ya no se convierten en errores fatales y no impiden el enlace.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.attribute-during-compilation">
<title>Error al aplicar el atributo durante la compilación</title>
<simpara>
Aplicar <code>#[\Attribute]</code> a una clase abstracta, enumeración, interfaz o rasgo
provoca un error durante la compilación. Anteriormente, se podía agregar el atributo,
pero al llamar a <methodname>ReflectionAttribute::newInstance</methodname>
se producía un error.
El error se puede retrasar desde la compilación hasta el tiempo de ejecución mediante el nuevo
atributo <code>#[\DelayedTargetValidation]</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.incompatible.core.disable-ini-setting">
<title>Configuración INI disable_classes</title>
<simpara>
Se ha eliminado la configuración INI <link linkend="ini.disable-classes">disable_classes</link>
ya que provoca que se rompan varias suposiciones del motor.
<!-- 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>Destrucción de valores que no son arrays</title>
<simpara>
La destrucción de valores que no son array (distintos de &null;) utilizando <literal>[]</literal> o <function>list</function> ahora
emite una advertencia.
<!-- 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>Advertencias relacionadas con conversiones</title>
<simpara>
Ahora se emite una advertencia al convertir números de punto flotante (o cadenas que parecen ser
de punto flotante) a enteros si no se pueden representar como tales. Esto afecta
tanto a las conversiones explícitas como a las implícitas de enteros.
<!-- RFC: https://wiki.php.net/rfc/warnings-php-8-5#casting_out_of_range_floats_to_int -->
</simpara>
<simpara>
Ahora se emite una advertencia al convertir NAN a otros tipos.
<!-- 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> ahora lanza un <classname>ValueError</classname>
cuando <parameter>$block_size</parameter> no está entre 1 y 9.
</simpara>
<simpara>
<function>bzcompress</function> ahora lanza un <classname>ValueError</classname>
cuando <parameter>$work_factor</parameter> no está entre 0 y 250.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.dom">
<title>DOM</title>
<simpara>
Clonar un <classname>DOMNamedNodeMap</classname>,
<classname>DOMNodeList</classname>, <classname>Dom\NamedNodeMap</classname>,
<classname>Dom\NodeList</classname>, <classname>Dom\HTMLCollection</classname>,
o <classname>Dom\DtdNamedNodeMap</classname> ahora falla.
Dado que nunca se generó un objeto funcional, no se espera ningún impacto.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.fileinfo">
<title>FileInfo</title>
<simpara>
<function>finfo_file</function> y <methodname>finfo::file</methodname>
ahora lanzan un <exceptionname>ValueError</exceptionname> en lugar de un
<exceptionname>TypeError</exceptionname> cuando <parameter>$filename</parameter>
contiene bytes nulos.
Esto alinea el tipo de error que se produce para que sea coherente con el resto
del lenguaje.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.intl">
<title>Intl</title>
<simpara>
La extensión ahora requiere al menos ICU 57.1.
</simpara>
<simpara>
<methodname>IntlDateFormatter::setTimeZone</methodname>/<function>datefmt_set_timezone</function>
ahora lanza una <exceptionname>IntlException</exceptionname> en clases no
inicializadas/fallos de clonación.
</simpara>
<simpara>
Todos los métodos <classname>Locale</classname> ahora lanzan un
<exceptionname>ValueError</exceptionname> cuando el argumento locale contiene bytes nulos.
</simpara>
<simpara>
El comportamiento de <constant>Collator::SORT_REGULAR</constant> con respecto al
manejo de strings numéricas ahora está alineado con el comportamiento de
<constant>SORT_REGULAR</constant> en ext/standard.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.ldap">
<title>LDAP</title>
<simpara>
<function>ldap_get_option</function> y <function>ldap_set_option</function>
ahora lanzan un <exceptionname>ValueError</exceptionname> al pasar una opción no válida.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mbstring">
<title>MBString</title>
<simpara>
Las tablas de datos Unicode se han actualizado a Unicode 17.0.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.mysqli">
<title>MySQLi</title>
<simpara>
Ahora ya no es posible llamar al constructor mysqli en un objeto ya construido
y lanza un <exceptionname>Error</exceptionname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.odbc">
<title>ODBC</title>
<simpara>
ODBC ahora presupone que está disponible al menos la funcionalidad de ODBC 3.5.
Se han eliminado la definición de ODBCVER y las opciones del sistema de compilación para controlarla.
</simpara>
<simpara>
ODBC ya no incluye opciones de compilación para controladores específicos (excepto
DB2) y elimina las excepciones para dichos controladores. Se recomienda
encarecidamente usar un administrador de controladores como iODBC o unixODBC en sistemas que no sean Windows.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.opcache">
<title>Opcache</title>
<simpara>
La extensión Opcache ahora viene integrada en el binario de PHP y siempre
se carga.
Las directivas INI <link linkend="ini.opcache.enable">opcache.enable</link>
y <link linkend="ini.opcache.enable-cli">opcache.enable_cli</link> siguen siendo
válidas.
</simpara>
<simpara>
Se han eliminado las opciones de configuración <option role="configure">--enable-opcache</option>/<option role="configure">--disable-opcache</option>
y la compilación ya no produce objetos <filename>opcache.so</filename>
ni <filename>php_opcache.dll</filename>.
</simpara>
<simpara>
El uso de las directivas INI <literal>zend_extension=opcache.so</literal> o
<literal>zend_extension=php_opcache.dll</literal>
generará una advertencia.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcntl">
<title>PCNTL</title>
<simpara>
<function>pcntl_exec</function> ahora lanza <exceptionname>ValueError</exceptionname>
cuando las entradas del parámetro <parameter>$args</parameter> contienen bytes nulos.
</simpara>
<simpara>
<function>pcntl_exec</function> ahora lanza <exceptionname>ValueError</exceptionname>
cuando las entradas o claves del parámetro <parameter>$env_vars</parameter>
contienen bytes nulos.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pcre">
<title>PCRE</title>
<simpara>
La extensión se compila sin la opción de compilación
PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK, que está semi-obsoleta.
<!-- https://github.com/PCRE2Project/pcre2/issues/736#issuecomment-2754024651 -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo">
<title>PDO</title>
<simpara>
Los argumentos del constructor definidos junto con
<constant>PDO::FETCH_CLASS</constant> ahora siguen la semántica habitual de CUFA
(<function>call_user_func_array</function>).
Esto significa que las claves de tipo cadena se comportarán como argumentos con nombre.
Además, se ha eliminado el ajuste automático de los argumentos por valor pasados a un
parámetro por referencia, y ahora se emite la advertencia habitual <constant>E_WARNING</constant>
sobre este problema.
Para pasar una variable por referencia a un argumento del constructor, utilice la asignación general
de referencia a un valor de array: <code>$ctor_args = [&amp;$valByRef]</code>
</simpara>
<simpara>
Intentar llamar a <methodname>PDOStatement::setFetchMode</methodname> durante
una llamada a <methodname>PDO::fetch</methodname>,
<methodname>PDO::fetchObject</methodname>,
<methodname>PDO::fetchAll</methodname>, por ejemplo, utilizando trucos como
pasar el objeto de declaración como argumento de constructor al buscar en un
objeto, ahora lanzará un <exceptionname>Error</exceptionname>.
</simpara>
<simpara>
Los valores de las constantes <constant>PDO::FETCH_GROUP</constant>,
<constant>PDO::FETCH_UNIQUE</constant>,
<constant>PDO::FETCH_CLASSTYPE</constant>,
<constant>PDO::FETCH_PROPS_LATE</constant>, y
<constant>PDO::FETCH_SERIALIZE</constant> ha cambiado.
</simpara>
<simpara>
Ahora se lanza un <exceptionname>ValueError</exceptionname> si se usa
<constant>PDO::FETCH_PROPS_LATE</constant> con un modo de obtención
diferente de <constant>PDO::FETCH_CLASS</constant>, de forma coherente
con otras flags de obtención.
</simpara>
<simpara>
Ahora se lanza un <exceptionname>ValueError</exceptionname> si se usa
<constant>PDO::FETCH_INTO</constant> como modo de obtención en
<methodname>PDO::fetchAll</methodname>,
de forma similar a <constant>PDO::FETCH_LAZY</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-firebird">
<title>PDO_FIREBIRD</title>
<simpara>
Ahora se produce un <exceptionname>ValueError</exceptionname> al intentar establecer un nombre de cursor
demasiado largo en un <classname>PDOStatement</classname> resultante del
controlador Firebird.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.pdo-sqlite">
<title>PDO_SQLITE</title>
<simpara>
SQLite <methodname>PDO::quote</methodname> ahora lanzará una excepción
o emitirá una advertencia, dependiendo del modo de error, si la cadena contiene
un byte nulo.
</simpara>
<simpara>
<methodname>PDO::sqliteCreateCollation</methodname> ahora lanzará una
excepción si la devolución de llamada tiene un tipo de retorno incorrecto, lo que lo hace más
acorde con el comportamiento de <methodname>Pdo\Sqlite::createCollation</methodname>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.posix">
<title>POSIX</title>
<simpara>
<function>posix_kill</function> ahora lanza una
<exceptionname>ValueError</exceptionname> cuando el argumento process_id es
menor o mayor que lo que admite la plataforma (entero con signo o
rango largo), la función <function>posix_setpgid</function> ahora lanza una
<exceptionname>ValueError</exceptionname> cuando process_id o
process_group_id es menor que cero o mayor que lo que admite
la plataforma.
</simpara>
<simpara>
<function>posix_setrlimit</function> ahora lanza un
<exceptionname>ValueError</exceptionname> cuando los argumentos hard_limit o
soft_limit son menores que -1 o si soft_limit es mayor que
hard_limit.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.reflection">
<title>Reflection</title>
<simpara>
<methodname>ReflectionAttribute::newInstance</methodname> ahora puede lanzar
errores para atributos internos si el atributo se aplicó en un destino
no válido y el error se retrasó del tiempo de compilación al tiempo de ejecución a través
del atributo #[\DelayedTargetValidation].
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.session">
<title>Sesión</title>
<simpara>
Intentar escribir datos de sesión donde <varname>$_SESSION</varname> tiene una clave
que contiene el carácter de barra vertical (<literal>|</literal>) ahora emitirá una advertencia
en lugar de fallar silenciosamente.
</simpara>
<simpara>
<function>session_start</function> es más estricta con respecto al argumento
<parameter>options</parameter>. Ahora lanza una <exceptionname>ValueError</exceptionname> si
el array no es un mapa hash, o una <exceptionname>TypeError</exceptionname>
si el valor de read_and_close no es de un tipo válido compatible con int.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.simplexml">
<title>SimpleXML</title>
<simpara>
Pasar una expresión XPath que devuelva algo distinto de un nodo establecido
en <methodname>SimpleXMLElement::xpath</methodname> ahora emitirá una advertencia
y devolverá &false;, en lugar de fallar silenciosamente y devolver un array vacío.
</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>
y <methodname>SNMP::__construct</methodname> ahora lanzará una
<exceptionname>ValueError</exceptionname> cuando el nombre de host
es demasiado largo, contiene algún byte nulo, o si el puerto proporcionado
es negativo o mayor que 65535, los valores de tiempo de espera y reintentos
son inferiores a -1 o demasiado grandes.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.soap">
<title>SOAP</title>
<simpara>
<methodname>SoapClient::__doRequest</methodname> ahora acepta un nuevo
parámetro opcional <parameter>$uriParserClass</parameter> que acepta
argumentos de tipo string o &null;.
&null; representa el método original basado en
(<function>parse_url</function>), mientras que los nuevos backends se utilizarán al pasar
<classname>Uri\Rfc3986\Uri</classname> o <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> y <function>socket_sendto</function>
ahora lanzan un <exceptionname>ValueError</exceptionname> si el puerto es menor
que 0 o mayor que 65535, y también si alguna de las entradas del array de sugerencias está
indexada numéricamente.
</simpara>
<simpara>
<function>socket_addrinfo_lookup</function> ahora lanza un
<exceptionname>TypeError</exceptionname> si alguno de los valores de las sugerencias
no se puede convertir a int y puede lanzar un <exceptionname>ValueError</exceptionname> si
alguno de estos valores se desborda.
</simpara>
<simpara>
<function>socket_set_option</function> con las opciones
<constant>MCAST_LEAVE_GROUP</constant>/<constant>MCAST_LEAVE_SOURCE_GROUP</constant>
ahora lanzan una excepción si el valor no es un objeto o array válido.
</simpara>
<simpara>
<function>socket_set_option</function> con contexto multicast ahora lanza un
<exceptionname>ValueError</exceptionname> cuando el socket creado no es de
la familia <constant>AF_INET</constant>/<constant>AF_INET6</constant>.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.spl">
<title>SPL</title>
<simpara>
<classname>ArrayObject</classname> ya no acepta enumeraciones, ya que modificar las
propiedades <property>$name</property> o <property>$value</property> puede romper
las suposiciones del motor.
</simpara>
<simpara>
El parámetro <parameter>$length</parameter> de
<methodname>SplFileObject::fwrite</methodname> ahora admite valores nulos.
El valor predeterminado cambió de <literal>0</literal> a &null;.
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.standard">
<title>Estándar</title>
<simpara>
El uso de una función de la familia printf con un formateador que no especificó
previamente la precisión incorrectamente restablece la precisión en lugar de tratarla
como una precisión 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> ahora lanza un
<exceptionname>ValueError</exceptionname> si la configuración contiene un
valor no válido o intenta establecer una entrada interna de solo lectura,
y un <exceptionname>TypeError</exceptionname> si una clave de configuración no es
un string.
</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: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.new-classes" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas clases e interfaces</title>
<sect2 xml:id="migration85.new-classes.core">
<title>Núcleo</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,499 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.new-features" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Nuevas características</title>
<sect2 xml:id="migration85.new-features.core">
<title>Núcleo de PHP</title>
<sect3 xml:id="migration85.new-features.core.pipe-operator">
<title>Operador Pipe</title>
<simpara>
Añadido el <link linkend="language.operators.functional">Operador
pipe (<literal>|&gt;</literal>)</link>.
<!-- RFC: https://wiki.php.net/rfc/pipe-operator-v3 -->
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$result = "Hola Mundo" |> strlen(...);
print $result . PHP_EOL; // imprime "10"
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.closures-in-constexpr">
<title>Cierres en expresiones constantes</title>
<para>
Añadido soporte para <link linkend="class.closure">Closures</link> y
<link linkend="functions.first_class_callable_syntax">callable de primera clase</link>
en expresiones constantes. Esto incluye:
<simplelist>
<member>Parámetros de atributos.</member>
<member>Valores predeterminados de propiedades y parámetros.</member>
<member>Constantes y constantes de clase.</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>Atributo #[\NoDiscard]</title>
<simpara>
Añadido el atributo <classname>NoDiscard</classname> para indicar que el
valor de retorno de una función es importante y debe ser consumido.
<!-- RFC: https://wiki.php.net/rfc/marking_return_value_as_important -->
</simpara>
<simpara>
Además, se añadió la conversión <literal>(void)</literal> para indicar que no usar un valor es intencional.
La conversión <literal>(void)</literal> no afecta la ejecución del programa por sí sola, pero
puede usarse para suprimir las advertencias emitidas por <code>#[\NoDiscard]</code> y posiblemente
también los diagnósticos emitidos por IDE externos o herramientas de análisis estático.
<!-- 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;
}
// Advertencia: El valor de retorno de la función concat() debe usarse o
// ignorarse intencionalmente convirtiéndolo a (void) en xxx.php
concat("a", "b");
// No hay advertencia, porque el valor de retorno es consumido por la asignación.
$results = concat("a", "b");
// No hay advertencia, porque se utiliza la conversión (void).
(void)concat("a", "b");
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.attributes-on-constants">
<title>Atributos en constantes</title>
<simpara>
Añadido soporte para atributos en constantes no de clase en tiempo de compilación
(p. ej. <code>const MY_CONST = 1;</code> en lugar de
<code>define('MY_CONST', 1);</code>).
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
</simpara>
<simpara>
El atributo <classname>Deprecated</classname> ahora se puede usar en constantes.
<!-- RFC: https://wiki.php.net/rfc/attributes-on-constants -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.delayedtargetvalidation-attribute">
<title>Atributo <code>#[\DelayedTargetValidation]</code></title>
<simpara>
El nuevo atributo <classname>DelayedTargetValidation</classname> permite
suprimir los errores de compilación de los atributos principales (o de extensión) que se
utilizan en destinos no válidos. Estos errores se notifican en tiempo de ejecución
cuando se llama a <methodname>ReflectionAttribute::newInstance</methodname>.
<!-- RFC: https://wiki.php.net/rfc/delayedtargetvalidation_attribute -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.override-for-properties">
<title><code>#[\Override]</code> para propiedades</title>
<simpara>
El atributo <classname>Override</classname> ahora se puede aplicar a las propiedades.
<!-- RFC: https://wiki.php.net/rfc/override_properties -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.static-aviz">
<title>Visibilidad asimétrica estática</title>
<simpara>
Añadida compatibilidad con <link linkend="language.oop5.visibility-members-aviz">
visibilidad asimétrica</link> para propiedades estáticas.
<!-- RFC: https://wiki.php.net/rfc/static-aviz -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.backtraces-for-fatal-errors">
<title>Seguimiento de pila para errores fatales</title>
<simpara>
Los errores fatales (como exceder el tiempo máximo de ejecución) ahora incluyen
un seguimiento de pila.
<!-- RFC: https://wiki.php.net/rfc/error_backtraces_v2 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.final-property-promotion">
<title>Promoción del constructor para propiedades finales</title>
<simpara>
La <link linkend="language.oop5.decon.constructor.promotion">promoción de propiedades
en el constructor ahora</link> se puede utilizar para propiedades finales.
<!-- RFC: https://wiki.php.net/rfc/final_promotion -->
</simpara>
</sect3>
<sect3 xml:id="migration85.new-features.core.casts-in-constexpr">
<title>Conversión en expresiones constantes</title>
<simpara>
Añadida compatibilidad para conversiones en expresiones constantes.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
const T1 = (int) 0.3; // Anteriormente: "Fatal error: Constant expression contains invalid operations"
print T1 . PHP_EOL; // Imprime "0"
]]>
</programlisting>
</informalexample>
</sect3>
<sect3 xml:id="migration85.new-features.core.clone-function">
<title>Función de clonación</title>
<simpara>
La <link linkend="language.oop5.cloning">construcción del lenguaje de clonación</link>
ahora es una función y admite la reasignación de propiedades (de solo lectura) durante
la clonación a través del nuevo parámetro <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>
Añadido soporte para
<link linkend="class.curlsharepersistenthandle">manejadores compartidos</link>
que se mantienen a través de múltiples solicitudes PHP, permitiendo de forma segura
una reutilización más eficaz de las conexiones.
<!-- RFC: https://wiki.php.net/rfc/curl_share_persistence_improvement -->
</simpara>
<simpara>
Añadido soporte para <constant>CURLINFO_USED_PROXY</constant> (libcurl >= 8.7.0),
<constant>CURLINFO_HTTPAUTH_USED</constant>,
y <constant>CURLINFO_PROXYAUTH_USED</constant> (libcurl >= 8.12.0)
a la función <function>curl_getinfo</function>.
Cuando <function>curl_getinfo</function> devuelve un array, la misma información
está disponible como claves <literal>"used_proxy"</literal>,
<literal>"httpauth_used"</literal> y
<literal>"proxyauth_used"</literal>.
<constant>CURLINFO_USED_PROXY</constant> se establece en cero si no se utilizó ningún proxy en la
transferencia anterior o en un valor distinto de cero si se utilizó un proxy.
<constant>CURLINFO_HTTPAUTH_USED</constant> y
<constant>CURLINFO_PROXYAUTH_USED</constant> obtienen máscaras de bits
que indican los métodos de autenticación HTTP y proxy que se
utilizaron en la solicitud anterior.
Véanse las constantes <constant>CURLAUTH_<replaceable>*</replaceable></constant> para
valores posibles.
</simpara>
<simpara>
Añadida la opción Curl <constant>CURLOPT_INFILESIZE_LARGE</constant>, que sustituye
de forma segura a <constant>CURLOPT_INFILESIZE</constant>. En algunos sistemas,
<constant>CURLOPT_INFILESIZE</constant> solo acepta un entero con signo de 32 bits como
tamaño de archivo (2,0 GiB), incluso en sistemas de 64 bits.
<constant>CURLOPT_INFILESIZE_LARGE</constant> acepta el valor entero más grande
que el sistema puede manejar.
</simpara>
<simpara>
Añadidos los valores <constant>CURLFOLLOW_OBEYCODE</constant>,
<constant>CURLFOLLOW_FIRSTONLY</constant> y <constant>CURLFOLLOW_ALL</constant>
para la opción <constant>CURLOPT_FOLLOWLOCATION</constant>
<function>curl_setopt</function>.
<constant>CURLFOLLOW_OBEYCODE</constant> para seguir más estrictamente en lo que respecta a
las redirecciones si están permitidas.
<constant>CURLFOLLOW_FIRSTONLY</constant> para seguir solo la primera redirección, por lo que
si hay alguna redirección posterior, no irá más allá.
<constant>CURLFOLLOW_ALL</constant> es equivalente a establecer
<constant>CURLOPT_FOLLOWLOCATION</constant> a true.
</simpara>
<simpara>
Añadida compatibilidad con <constant>CURLINFO_CONN_ID</constant> (libcurl >= 8.2.0)
a la función <function>curl_getinfo</function>. Esta constante permite recuperar
el ID único de la conexión utilizada en una transferencia cURL. Resulta especialmente
útil cuando se requiere lógica de reutilización o agrupación de conexiones en
aplicaciones PHP. Cuando <function>curl_getinfo</function> devuelve un array,
este valor está disponible como la clave <literal>"conn_id"</literal>.
</simpara>
<simpara>
Añadida compatibilidad con <constant>CURLINFO_QUEUE_TIME_T</constant> (libcurl >= 8.6.0)
a la función <function>curl_getinfo</function>. Esta constante permite
obtener el tiempo (en microsegundos) que la solicitud permaneció en la cola de conexiones
de libcurl antes de ser enviada.
Este valor también se puede obtener pasando
<constant>CURLINFO_QUEUE_TIME_T</constant> al parámetro <parameter>option</parameter>
de la función <function>curl_getinfo</function>.
</simpara>
<simpara>
Añadido soporte para <constant>CURLOPT_SSL_SIGNATURE_ALGORITHMS</constant> para
especificar los algoritmos de firma que se utilizarán para TLS.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.dom">
<title>DOM</title>
<simpara>
Añadida <property>Dom\Element::$outerHTML</property>.
</simpara>
<simpara>
Añadida la propiedad <property>$children</property> a
las implementaciones de <interfacename>Dom\ParentNode</interfacename>.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.exif">
<title>EXIF</title>
<simpara>
Añadida compatibilidad con las etiquetas Exif <literal>OffsetTime*</literal>.
</simpara>
<simpara>
Añadida compatibilidad con HEIF/HEIC.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.filter">
<title>Filter</title>
<simpara>
Añadida la nueva flag <constant>FILTER_THROW_ON_FAILURE</constant>, que se puede
pasar a las funciones de filtro y fuerza el lanzamiento de una excepción
cuando falla la validación.
Esta nueva bandera no se puede combinar con
<constant>FILTER_NULL_ON_FAILURE</constant>; si se intenta, se lanzará
<exceptionname>ValueError</exceptionname>.
<!-- RFC: https://wiki.php.net/rfc/filter_throw_on_failure -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.intl">
<title>Intl</title>
<simpara>
Añadidas las constantes de clase <constant>NumberFormatter::CURRENCY_ISO</constant>,
<constant>NumberFormatter::CURRENCY_PLURAL</constant>,
<constant>NumberFormatter::CASH_CURRENCY</constant>
y <constant>NumberFormatter::CURRENCY_STANDARD</constant>
para varios formatos de números relacionados con monedas.
</simpara>
<simpara>
Añadidos <methodname>Locale::addLikelySubtags</methodname> y
<methodname>Locale::minimizeSubtags</methodname> para manejar las etiquetas probables
en una configuración regional determinada.
</simpara>
<simpara>
Añadida la clase <classname>IntlListFormatter</classname> para formatear, ordenar
y puntuar una lista de elementos con una configuración regional determinada,
los operandos <constant>IntlListFormatter::TYPE_AND</constant>,
<constant>IntlListFormatter::TYPE_OR</constant>,
<constant>IntlListFormatter::TYPE_UNITS</constant>, y los anchos
<constant>IntlListFormatter::WIDTH_WIDE</constant>,
<constant>IntlListFormatter::WIDTH_SHORT</constant> y
<constant>IntlListFormatter::WIDTH_NARROW</constant>.
Es compatible a partir de ICU 67.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.pdo-sqlite">
<title>PDO_Sqlite</title>
<simpara>
Añadida la constante de clase <constant>Pdo\Sqlite::ATTR_BUSY_STATEMENT</constant>.
</simpara>
<simpara>
Añadidas las constantes de clase <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>
Añadido el atributo de conexión <constant>Pdo\Sqlite::ATTR_TRANSACTION_MODE</constant>
con los valores posibles <constant>Pdo\Sqlite::TRANSACTION_MODE_DEFERRED</constant>,
<constant>Pdo\Sqlite::TRANSACTION_MODE_IMMEDIATE</constant>
y <constant>Pdo\Sqlite::TRANSACTION_MODE_EXCLUSIVE</constant>,
lo que permite configurar el modo de transacción que se utilizará al llamar a beginTransaction().
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.session">
<title>Sesiones</title>
<simpara>
<function>session_set_cookie_params</function>,
<function>session_get_cookie_params</function>,
y <function>session_start</function> ahora admiten cookies particionadas mediante la
clave <literal>"partitioned"</literal>.
<!-- RFC: https://wiki.php.net/rfc/CHIPS -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.soap">
<title>SOAP</title>
<simpara>
Los casos de enumeración ahora se vuelcan en <methodname>SoapClient::__getTypes</methodname>.
</simpara>
<simpara>
Añadida compatibilidad con el atributo xml:lang de Soap 1.2 Reason Text.
</simpara>
<simpara>
Por lo tanto, las firmas de <methodname>SoapFault::__construct</methodname> y
<methodname>SoapServer::fault</methodname>
ahora incluyen un parámetro opcional <parameter>$lang</parameter>.
Esta compatibilidad resuelve el problema de compatibilidad con los clientes SOAP de .NET.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.standard">
<title>Estándar</title>
<simpara>
<function>mail</function> ahora devuelve el error real de sendmail y detecta
si el proceso de sendmail finalizó inesperadamente.
En tales casos, se emite una advertencia y la función devuelve false.
Anteriormente, estos errores se ignoraban silenciosamente.
Este cambio afecta únicamente al transporte de sendmail.
</simpara>
<simpara>
<function>getimagesize</function> ahora admite imágenes HEIF/HEIC.
</simpara>
<simpara>
<function>getimagesize</function> ahora admite imágenes SVG cuando también se carga
ext-libxml.
Del mismo modo, <function>image_type_to_extension</function> y
<function>image_type_to_mime_type</function>
ahora también admiten IMAGETYPE_SVG.
</simpara>
<simpara>
El array que devuelve <function>getimagesize</function> ahora incluye dos entradas adicionales:
<literal>"width_unit"</literal> y <literal>"height_unit"</literal> para indicar las
unidades en las que se expresan las dimensiones. Estas unidades son px por omisión. No tienen
por qué ser iguales (por poner solo un ejemplo: una puede ser cm y la otra px).
</simpara>
<simpara>
<function>setcookie</function> y <function>setrawcookie</function> ahora admiten la
clave <literal>"partitioned"</literal>.
<!-- RFC: https://wiki.php.net/rfc/CHIPS -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.uri">
<title>URI</title>
<simpara>
Añadida una extensión URI siempre habilitada que se puede utilizar para manejar
URI y URL de acuerdo con RFC 3986 y WHATWG URL.
<!-- RFC: https://wiki.php.net/rfc/url_parsing_api -->
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.xsl">
<title>XSL</title>
<simpara>
El argumento <parameter>$namespace</parameter> de <methodname>XSLTProcessor::getParameter</methodname>,
<methodname>XSLTProcessor::setParameter</methodname> y
<methodname>XSLTProcessor::removeParameter</methodname> ahora funciona correctamente
en lugar de considerarse vacío.
Esto solo funciona si el argumento <parameter>$name</parameter> no utiliza la notación Clark ni es un
QName, ya que en esos casos el espacio de nombres se obtiene del espacio de nombres href o
prefijo, respectivamente.
</simpara>
</sect2>
<sect2 xml:id="migration85.new-features.zlib">
<title>Zlib</title>
<simpara>
Ahora se admite <function>flock</function> en flujos zlib. Anteriormente,
esta función siempre fallaba al realizar cualquier acción de bloqueo.
</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: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.new-functions">
<title>Nuevas funciones</title>
<sect2 xml:id="migration85.new-functions.core">
<title>Núcleo</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>Estándar</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,631 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.other-changes">
<title>Otros cambios</title>
<sect2 xml:id="migration85.other-changes.core">
<title>Cambios en el núcleo</title>
<sect3 xml:id="migration85.other-changes.core.core">
<title>Núcleo</title>
<simpara>
El temporizador de alta resolución (<function>hrtime</function>) en macOS ahora
utiliza la API recomendada
<code>clock_gettime_nsec_np(CLOCK_UPTIME_RAW)</code> en lugar de
<code>mach_absolute_time()</code>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.core.cgi-cli">
<title>CGI/CLI</title>
<simpara>
Se ha eliminado la opción <option>-z</option> o <option>--zend-extension</option>
ya que no funcionaba.
En su lugar, utilice <option>-d zend_extension=[ruta]</option>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.core.pdo-odbc">
<title>PDO_ODBC</title>
<simpara>
Se ha modificado el comportamiento de recuperación de datos para columnas de mayor tamaño. En lugar de
recuperar bloques de 256 bytes, PDO_ODBC intentará recuperar bloques de mayor tamaño;
actualmente, este tamaño corresponde al tamaño de página menos la sobrecarga de cadena.
Los controladores que devuelven SQL_NO_TOTAL en SQLGetData también se gestionan mejor.
Esto debería mejorar la compatibilidad y el rendimiento.
<!-- See: GH-10809, GH-10733 -->
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.sapi">
<title>Changes in SAPI Modules</title>
<sect3 xml:id="migration85.other-changes.sapi.cli">
<title>CLI</title>
<simpara>
Intentar establecer un título de proceso demasiado largo con
<function>cli_set_process_title</function> ahora fallará en lugar de
truncar silenciosamente el título dado.
</simpara>
<simpara>
Se agregó una nueva opción <option>--ini=diff</option> para imprimir la configuración INI
modificada con respecto al valor predeterminado integrado.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.sapi.fpm">
<title>FPM</title>
<simpara>
FPM con httpd ProxyPass decodifica opcionalmente la ruta completa del script. Se ha añadido
la configuración INI <!-- <link linkend="ini.fastcgi.script_path_encoded"-->fastcgi.script_path_encoded<!-- </link> -->
para evitar este nuevo comportamiento.
</simpara>
<simpara>
El límite de registro de acceso de FPM ahora respeta el valor <link linkend="log-limit">log_limit</link>.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.functions">
<title>Funciones modificadas</title>
<sect3 xml:id="migration85.other-changes.functions.intl">
<title>Intl</title>
<simpara>
<function>grapheme_extract</function> asigna correctamente el valor de
<parameter>$next</parameter> al omitir bytes iniciales no válidos.
Anteriormente, en ocasiones apuntaba al inicio del
límite del grafema en lugar de al final.
</simpara>
<simpara>
Se ha eliminado &false; de la unión de tipos de retorno de
<function>transliterator_get_error_code</function>,
<function>transliterator_get_error_message</function>,
<methodname>TransLiterator::getErrorCode</methodname>,
y <methodname>TransLiterator::getErrorMessage</methodname>. Devolver &false;
nunca fue posible.
</simpara>
<simpara>
Las siguientes funciones ahora admiten un argumento <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> y
<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> ahora acepta una conexión &null;,
como <function>ldap_set_option</function>, para permitir la recuperación de
opciones globales.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.libxml">
<title>libxml</title>
<simpara>
<function>libxml_set_external_entity_loader</function> ahora tiene un tipo
de retorno formal de <type>true</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.openssl">
<title>OpenSSL</title>
<simpara>
<function>openssl_public_encrypt</function> y
<function>openssl_private_decrypt</function> tienen un nuevo parámetro
<parameter>$digest_algo</parameter> que permite especificar el algoritmo de
resumen hash para el relleno OAEP.
</simpara>
<simpara>
<function>openssl_sign</function> y <function>openssl_verify</function>
tienen un nuevo parámetro <parameter>$padding</parameter> para permitir el uso
de un relleno RSA PSS más seguro.
</simpara>
<simpara>
<function>openssl_cms_encrypt</function> el parámetro <parameter>$cipher_algo</parameter>
puede ser un string con el nombre del algoritmo de cifrado.
Esto permite usar más algoritmos, incluidos los algoritmos de cifrado AES y GCM, para
datos cifrados con autenticación.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pcntl">
<title>PCNTL</title>
<simpara>
<function>pcntl_exec</function> ahora tiene un tipo de retorno formal de
<type>false</type>.
</simpara>
<simpara>
<function>pcntl_waitid</function> toma un argumento resource_usage adicional
para recopilar varias métricas específicas de la plataforma sobre el proceso hijo.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pdo-pgsql">
<title>PDO_PGSQL</title>
<simpara>
<methodname>Pdo\Pgsql::copyFromArray</methodname> ahora admite entradas <type>iterable</type>.
</simpara>
<simpara>
<methodname>Pdo\Pgsql::setAttribute</methodname> y
<methodname>Pdo\Pgsql::prepare</methodname> permiten establecer
<constant>PDO::ATTR_PREFETCH</constant> en 0, lo que activa el modo de carga diferida.
En este modo, las sentencias no se pueden ejecutar en paralelo.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.pgsql">
<title>PostgreSQL</title>
<simpara>
<function>pg_copy_from</function> ahora admite entradas <type>iterable</type>.
</simpara>
<simpara>
<function>pg_connect</function> comprueba si el argumento connection_string
contiene algún byte nulo.
</simpara>
<simpara>
<function>pg_close_stmt</function> comprueba si el argumento statement_name
contiene algún byte nulo.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.posix">
<title>POSIX</title>
<simpara>
<function>posix_ttyname</function> establece last_error en EBADF cuando encuentra
un descriptor de archivo no válido.
</simpara>
<simpara>
<function>posix_isatty</function> genera un mensaje <constant>E_WARNING</constant>
cuando encuentra un descriptor de archivo no válido.
</simpara>
<simpara>
<function>posix_fpathconf</function> comprueba los descriptores de archivo no válidos y
establece last_error en EBADF y genera un mensaje <constant>E_WARNING</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.reflection">
<title>Reflection</title>
<simpara>
La salida de <methodname>ReflectionClass::__toString</methodname> para
enumeraciones ha cambiado para indicar mejor que la clase es una enumeración y que
los casos de enumeración son casos de enumeración en lugar de constantes de clase normales.
</simpara>
<simpara>
La salida de <methodname>ReflectionProperty::__toString</methodname> para
propiedades con hooks ha cambiado para indicar qué hooks tiene la propiedad,
si son finales y si la propiedad es virtual.
Esto también afecta al resultado de <methodname>ReflectionClass::__toString</methodname>
cuando una clase contiene propiedades con hooks.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.sockets">
<title>Sockets</title>
<simpara>
<function>socket_create</function>/<function>socket_bind</function> puede
crear sockets de la familia <constant>AF_PACKET</constant>.
</simpara>
<simpara>
<function>socket_getsockname</function> obtiene el índice de la interfaz y su
representación de string con el socket <constant>AF_PACKET</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.functions.zlib">
<title>Zlib</title>
<simpara>
El argumento <parameter>$use_include_path</parameter> para las funciones
<function>gzfile</function>, <function>gzopen</function> y
<function>readgzfile</function> se ha cambiado
de <type>int</type> a <type>bool</type>.
</simpara>
<simpara>
Las funciones <function>gzfile</function>,
<function>gzopen</function> y <function>readgzfile</function>
ahora respetan el contexto de flujo predeterminado.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.extensions">
<title>Otros cambios en las extensiones</title>
<sect3 xml:id="migration85.other-changes.extensions.curl">
<title>cURL</title>
<simpara>
<function>curl_setopt</function> con
el valor de la opción <constant>CURLOPT_FOLLOWLOCATION</constant>
ya no se trata como booleano, sino como entero para manejar
<constant>CURLFOLLOW_OBEYCODE</constant> y
<constant>CURLFOLLOW_FIRSTONLY</constant>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.fileinfo">
<title>Fileinfo</title>
<simpara>
Actualizado file de 5.45 a 5.46.
</simpara>
<simpara>
El tipo de retorno de <function>finfo_close</function> se ha cambiado a
<type>true</type>, en lugar de <type>bool</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.intl">
<title>Intl</title>
<simpara>
El mecanismo interno de errores de Intl se ha modernizado para
indicar con mayor precisión qué sitio de llamada causó qué error.
Además, algunas excepciones de extensión/fecha ahora se encapsulan dentro de una
<classname>IntlException</classname>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.lexbor">
<title>Lexbor</title>
<simpara>
Se ha añadido una extensión Lexbor siempre habilitada. Contiene la biblioteca Lexbor
que se separó de <link linkend="book.dom">ext/dom</link>
para su reutilización en otras extensiones.
La nueva extensión no está expuesta directamente al espacio de usuario.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.opcache">
<title>Opcache</title>
<simpara>
La <link linkend="book.opcache">extensión Opcache</link> ahora viene siempre
integrada en el binario de PHP y siempre se carga.
Las directivas INI <link linkend="ini.opcache.enable">opcache.enable</link>
y <link linkend="ini.opcache.enable-cli">opcache.enable_cli</link> siguen
siendo válidas.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.pcre">
<title>PCRE</title>
<simpara>
Se actualizó pcre2lib de 10.44 a 10.46.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.pdo-sqlite">
<title>PDO_Sqlite</title>
<simpara>
Se incrementó el soporte de versión mínima de lanzamiento de 3.7.7 a 3.7.17.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.readline">
<title>Readline</title>
<simpara>
Los tipos de retorno de <function>readline_add_history</function>,
<function>readline_clear_history</function>
y <function>readline_callback_handler_install</function> se han
cambiado a <type>true</type>, en lugar de <type>bool</type>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.extensions.reflection">
<title>Reflection</title>
<simpara>
<classname>ReflectionConstant</classname> ya no es final.
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.ini">
<title>Cambios en el manejo de archivos INI</title>
<sect3 xml:id="migration85.other-changes.ini.core">
<title>Núcleo</title>
<simpara>
Añadido fatal_error_backtraces para controlar si los errores fatales deben incluir
un seguimiento de pila.
<!-- RFC: https://wiki.php.net/rfc/error_backtraces_v2 -->
</simpara>
<simpara>
Añadida la configuración INI max_memory_limit, solo para el inicio, para controlar el máximo
memory_limit que se puede configurar al inicio o durante la ejecución. Si se supera
este valor, se genera una advertencia, a menos que se establezca en -1, lo cual establece memory_limit al
valor actual de max_memory_limit.
<!-- ML discussion: https://externals.io/message/127108 -->
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.ini.opcache">
<title>Opcache</title>
<simpara>
Añadido opcache.file_cache_read_only para admitir un directorio
<link linkend="ini.opcache.file-cache">opcache.file_cache</link> de solo lectura,
para su uso con sistemas de archivos de solo lectura (p. ej., contenedores Docker de solo lectura).
Se recomienda usarlo con <literal>opcache.validate_timestamps=0</literal>,
<literal>opcache.enable_file_override=1</literal>
y <literal>opcache.file_cache_consistency_checks=0</literal>.
</simpara>
<note>
<simpara>
Es posible que se ignore una caché generada con una compilación diferente de PHP,
una ruta de archivo diferente, o una configuración diferente
(incluidas las extensiones que se cargan).
</simpara>
</note>
<simpara>
El valor predeterminado de
<link linkend="ini.opcache.jit-hot-loop">opcache.jit_hot_loop</link>
ahora es 61 (un número primo) para evitar que sea múltiplo del número de iteraciones
del bucle.
Se recomienda establecer este parámetro en un número primo.
</simpara>
<simpara>
Modificar <link
linkend="ini.opcache.memory-consumption">opcache.memory_consumption</link>
cuando OPcache SHM ya está configurado ahora informará correctamente un fallo
en lugar de no hacer nada silenciosamente y mostrar valores engañosos en PHPInfo.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.ini.openssl">
<title>OpenSSL</title>
<simpara>
Añadido <!-- <link linkend="ini.openssl.libctx"-->openssl.libctx<!-- </link> -->
para seleccionar el tipo de contexto de la biblioteca OpenSSL.
Se puede usar un contexto de biblioteca personalizado para cada hilo o un único contexto de biblioteca global (predeterminado).
Se puede utilizar una biblioteca libctx personalizada para cada hilo o una única biblioteca
libctx global (predeterminada).
</simpara>
</sect3>
</sect2>
<sect2 xml:id="migration85.other-changes.performance">
<title>Rendimiento</title>
<sect3 xml:id="migration85.other-changes.performance.core">
<title>Núcleo</title>
<simpara>
Eliminados los OPcodes para comparaciones de identidad con valores booleanos, en particular
para el patrón <code>match(true)</code>.
</simpara>
<simpara>
Añadida especialización de OPcode para comparaciones <code>=== []</code> y
<code>!== []</code>.
</simpara>
<simpara>
La creación de objetos de excepción ahora es mucho más rápida.
</simpara>
<simpara>
Las partes del código que utilizaban SSE2 se han adaptado para utilizar también SIMD
con ARM NEON.
</simpara>
<simpara>
Se introdujo la máquina virtual TAILCALL, habilitada por defecto al compilar con Clang>=19
en x86_64 o aarch64. La máquina virtual TAILCALL es tan rápida como la máquina virtual HYBRID utilizada
al compilar con GCC. Esto hace que los binarios de PHP compilados con Clang>=19 sean tan rápidos como
los binarios compilados con GCC. El rendimiento de la máquina virtual CALL, utilizada con otros
compiladores, también ha mejorado considerablemente.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.intl">
<title>Intl</title>
<simpara>
Ahora se evita la creación de copias adicionales de strings al convertir strings
para su uso en el intercalador.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.mbstring">
<title>MBString</title>
<simpara>
Las partes del código que utilizaban SSE2 se han adaptado para utilizar también SIMD
con ARM NEON.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.opcache">
<title>Opcache</title>
<simpara>
Mejora del rendimiento en la recuperación de variables TLS en código compilado con JIT en compilaciones
que no utilizan Glibc.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.reflection">
<title>Reflection</title>
<para>
Mejorado el rendimiento de los siguientes métodos:
<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>
Mejorado el rendimiento de los métodos y accesores de dimensiones de
<classname>SplFixedArray</classname>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.standard">
<title>Estándar</title>
<simpara>
Mejorado el rendimiento de las funciones array con funciones de devoluciones de llamada
(<function>array_find</function>, <function>array_filter</function>,
<function>array_map</function>, <function>usort</function>, ...).
</simpara>
<simpara>
Mejorado el rendimiento de <function>urlencode</function> y
<function>rawurlencode</function>.
</simpara>
<simpara>
Mejorado el rendimiento de <function>unpack</function> con repeticiones sin nombre
al evitar la creación de strings temporales y su posterior análisis.
</simpara>
<simpara>
Mejorado el rendimiento de <function>pack</function>.
Improved <function>pack</function> performance.
</simpara>
<simpara>
Mejoras menores en el rendimiento de <function>array_chunk</function>.
</simpara>
</sect3>
<sect3 xml:id="migration85.other-changes.performance.xml">
<title>XML</title>
<simpara>
Mejorado el rendimiento del acceso a las propiedades de <classname>XMLReader</classname>.
</simpara>
<simpara>
Mejorado el rendimiento de <classname>XMLWriter</classname> y consumo de
memoria reducido.
</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,94 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ec45af749649dc0d6a23eaedeed1b601f7460813 Maintainer: Marqitos Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="migration85.windows-support">
<title>Soporte para Windows</title>
<sect2 xml:id="migration85.windows-support.core">
<title>Núcleo</title>
<simpara>
Las variables de configuración <constant>PHP_VERSION</constant>,
<constant>PHP_MINOR_VERSION</constant> y
<constant>PHP_RELEASE_VERSION</constant> ahora siempre son números.
Anteriormente, eran strings para las compilaciones de buildconf.
</simpara>
<simpara>
Las compilaciones de <command>phpize</command> ahora reflejan el árbol de origen en el
directorio de compilación (como ya funcionaba para las compilaciones dentro del árbol); algunas compilaciones
de extensión (especialmente cuando se usa Makefile.frag.w32) pueden necesitar ajustes.
</simpara>
<simpara>
Ahora se admite <option role="configure">--enable-sanitizer</option>
para compilaciones de MSVC. Esto habilita ASan y las aserciones de depuración, y es compatible
a partir de MSVC 16.10 y Windows 10.
</simpara>
<simpara>
La <option role="configure">--with-uncritical-warn-choke</option>
para las compilaciones de clang ya no es compatible.
En su lugar, seleccione las advertencias que desea suprimir mediante CFLAGS.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.com">
<title>COM</title>
<simpara>
Ahora la extensión se compila de forma compartida por defecto; anteriormente se compilaba
como una extensión estática por defecto, aunque los binarios oficiales de Windows compilaban una
extensión compartida.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.ffi">
<title>FFI</title>
<simpara>
Ya no es necesario especificar la biblioteca al usar
<methodname>FFI::cdef</methodname> y <methodname>FFI::load</methodname>.
Sin embargo, esta funcionalidad no debe utilizarse en producción.
</simpara>
</sect2>
<sect2 xml:id="migration85.windows-support.streams">
<title>Streams</title>
<simpara>
Si el array <parameter>$read</parameter> solo contiene pipe streams
y los arrays <parameter>$write</parameter> y <parameter>$except</parameter> están vacíos,
<function>stream_select</function> ahora se comporta de forma similar a los sistemas POSIX;
es decir, la función solo retorna si al menos un pipe está listo para leerse
o después de que expire el tiempo de espera.
Anteriormente, <function>stream_select</function> retornaba inmediatamente,
indicando que todos los flujos estaban listos para leerse.
</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

@@ -836,7 +836,7 @@ carpeta PHP a la carpeta del sistema de Windows también funciona (ya que la car
<emphasis xmlns="http://docbook.org/ns/docbook">Esta extensión requiere que los siguientes archivos estén en el
<envar>PATH</envar>:</emphasis> '>
<!ENTITY manual.migration.seealso 'Ver también los guías de migración entre las diferentes versiones de PHP'>
<!ENTITY manual.migration.seealso 'Véase también las guías de migración entre las diferentes versiones de PHP'>
<!ENTITY style.oop 'Estilo orientado a objetos'>
<!ENTITY style.procedural 'Estilo procedimental'>