From 05e68814d2fd78a6c8978e48fc59a53579109916 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Tue, 8 Sep 2026 09:47:49 +0200 Subject: [PATCH] [Sync-En] document the PHP 8.5 core language features and deprecations --- appendices/ini.core.xml | 30 ++++++- language/constants.xml | 35 +++++++- language/errors/basics.xml | 26 +++++- language/functions.xml | 34 +++++++- language/oop5/magic.xml | 6 +- language/operators/increment.xml | 8 +- language/predefined/closure/bind.xml | 44 +++++++--- language/predefined/closure/bindto.xml | 94 +++++++++++++-------- language/types/callable.xml | 8 +- reference/outcontrol/functions/ob-start.xml | 31 ++++++- 10 files changed, 258 insertions(+), 58 deletions(-) diff --git a/appendices/ini.core.xml b/appendices/ini.core.xml index 4a8117cb20..c8f6cffb9c 100644 --- a/appendices/ini.core.xml +++ b/appendices/ini.core.xml @@ -1,5 +1,5 @@ - +
@@ -392,6 +392,12 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk INI_ALL + + max_memory_limit + "-1" + INI_SYSTEM + Disponible a partir de PHP 8.5.0 + @@ -415,6 +421,28 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk + + + max_memory_limit + int + + + + Disponible a partir de PHP 8.5.0. Esta opción, solo modificable al + arranque, controla el valor máximo al que puede configurarse + memory_limit, ya sea al arranque + o durante la ejecución (por ejemplo mediante + ini_set). Establecer + memory_limit a un valor que + supere max_memory_limit produce una advertencia + y el valor queda limitado. Establézcala a -1 + (el valor por omisión) para no imponer ningún límite superior. + + + &ini.shorthandbytes; + + + diff --git a/language/constants.xml b/language/constants.xml index 10ed5ea6bd..60c6e4a69f 100644 --- a/language/constants.xml +++ b/language/constants.xml @@ -1,5 +1,5 @@ - + Constantes @@ -21,6 +21,12 @@ + + + A partir de PHP 8.5.0, redeclarar una constante ya definida está obsoleto. + + + El nombre de una constante sigue las mismas reglas que cualquier etiqueta en PHP. Un nombre de constante válido comienza con una letra o guion bajo, @@ -225,6 +231,33 @@ echo ANIMALS_DEF[1] . "\n"; // muestra "cat" + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Se añadió el soporte de las conversiones de tipo (por ejemplo + (int), (string)) en las expresiones + constantes. También se añadió el soporte de las + Closures y de los + callables de + primera clase en las expresiones constantes. + + + + + + + &reftitle.seealso; diff --git a/language/errors/basics.xml b/language/errors/basics.xml index dbd0098afe..649d4267ed 100644 --- a/language/errors/basics.xml +++ b/language/errors/basics.xml @@ -1,6 +1,6 @@ - + @@ -77,6 +77,30 @@ tal como el envío de un correo electrónico. + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Los errores fatales (como un tiempo máximo de ejecución superado) ahora + incluyen una traza de la pila en su mensaje de error. + + + + + + + + Functions @@ -1418,6 +1418,14 @@ Stack trace: + + 8.5.0 + + Las Closures ahora pueden usarse en expresiones constantes (por + ejemplo valores por omisión de propiedades, parámetros de atributos, + constantes). + + 8.3.0 @@ -1725,6 +1733,30 @@ $obj?->prop->method(...); + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Los callables de primera clase ahora pueden usarse en expresiones + constantes (por ejemplo valores por omisión de propiedades, parámetros + de atributos, constantes). + + + + + + diff --git a/language/oop5/magic.xml b/language/oop5/magic.xml index f9f09ea2a0..ecfb463115 100644 --- a/language/oop5/magic.xml +++ b/language/oop5/magic.xml @@ -1,5 +1,5 @@ - + Métodos mágicos @@ -580,6 +580,10 @@ object(A)#2 (2) { entonces todas las propiedades públicas, protegidas y privadas serán mostradas. + + A partir de PHP 8.5.0, devolver &null; desde __debugInfo() + está obsoleto. Devuelva un array vacío en su lugar. + Uso de <link linkend="object.debuginfo">__debugInfo()</link> diff --git a/language/operators/increment.xml b/language/operators/increment.xml index fe3cd46a89..ab83af6746 100644 --- a/language/operators/increment.xml +++ b/language/operators/increment.xml @@ -1,12 +1,12 @@ - + Operadores de incremento y decremento Incremento y decremento PHP soporta los operadores de pre- y post- incremento y decremento. - Estos operadores unaires permiten aumentar o disminuir la valor de un. + Estos operadores unarios permiten aumentar o disminuir el valor en uno. Operadores de incremento y decremento @@ -131,6 +131,8 @@ int(4) Esta funcionalidad es deprecada de manera suave a partir de PHP 8.3.0. La función str_increment debe ser utilizada en su lugar. + A partir de PHP 8.5.0, incrementar strings no numéricos emite una advertencia + de obsolescencia. @@ -155,7 +157,7 @@ for ($n=0; $n<6; $n++) { echo ++$s . PHP_EOL; } // Los strings alfanuméricos se comportan de manera diferente -echo '== Caracteres digitales ==' . PHP_EOL; +echo '== Strings alfanuméricos ==' . PHP_EOL; $d = 'A8'; for ($n=0; $n<6; $n++) { echo ++$d . PHP_EOL; diff --git a/language/predefined/closure/bind.xml b/language/predefined/closure/bind.xml index ac1fb1c249..e0e4d5f410 100644 --- a/language/predefined/closure/bind.xml +++ b/language/predefined/closure/bind.xml @@ -1,5 +1,5 @@ - + @@ -30,30 +30,30 @@ closure - + La función anónima a vincular. - + newThis - + El objeto al que la función anónima dada debería ser vinculado, o &null; para que el cierre sea desvinculado. - + newScope - + El ámbito de clase a la que asociar el cierre, o 'static' para mantener el actual. Si se proporciona un objeto, el tipo del mismo se usará en su lugar. Esto determina la visibilidad de métodos protegidos y privados del objeto vinculado. No se permite pasar (un objeto de) una clase interna a este parámetro. - + @@ -61,9 +61,33 @@ &reftitle.returnvalues; - - Devuelve un nuevo objeto Closure object, o &null; en caso de error. - + + Devuelve un nuevo objeto Closure, o &null; en caso de error. + + + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Vincular una instancia a un cierre estático, o vincular un método de una + jerarquía de clases incompatible, ahora está obsoleto (estos casos ya + emitían un E_WARNING). + + + + + diff --git a/language/predefined/closure/bindto.xml b/language/predefined/closure/bindto.xml index 5974de12b7..1c27aaf08e 100644 --- a/language/predefined/closure/bindto.xml +++ b/language/predefined/closure/bindto.xml @@ -1,11 +1,11 @@ - + Closure::bindTo - Duplica la cierre con un nuevo objeto vinculado y un nuevo contexto de clase. + Duplica el cierre con un nuevo objeto vinculado y un nuevo ámbito de clase. @@ -16,38 +16,39 @@ objectnullnewThis objectstringnullnewScope"static" - + Crea y devuelve una nueva función anónima con el mismo cuerpo y las mismas variables vinculadas que la original, pero con un objeto vinculado - que puede ser diferente, y un nuevo contexto de clase. - + que puede ser diferente, y un nuevo ámbito de clase. + - + El objeto vinculado determina el valor que $this tendrá en el cuerpo de la función, - y el contexto de clase representa una clase que determina a qué miembros privados y protegidos - la función anónima tendrá acceso. En otras palabras, las propiedades que serán visibles serán las - mismas que si la función anónima fuera un método de la clase pasada a través del argumento + y el ámbito de clase representa una clase que determina a qué miembros privados y protegidos + la función anónima tendrá acceso. En otras palabras, los miembros que serán visibles serán los + mismos que si la función anónima fuera un método de la clase pasada a través del parámetro newScope. - + - - Las cierres estáticas no pueden tener un objeto vinculado (el valor del argumento + + Los cierres estáticos no pueden tener ningún objeto vinculado (el valor del parámetro newThis debería ser &null;), pero este método puede - utilizarse para cambiar su ámbito de clase. - + utilizarse igualmente para cambiar su ámbito de clase. + - - Este método verificará que una cierre no estática a la que se le pase - un contexto de objeto se vincule a este objeto (y ya no sea no estática), - y viceversa. Con este fin, las cierres no estáticas a las que se les pase un - contexto de clase pero &null; como contexto de objeto serán convertidas en estáticas, y viceversa. - + + Este método garantiza que, para un cierre no estático, tener una instancia + vinculada implica tener un ámbito, y viceversa. Con este fin, los cierres no + estáticos a los que se les da un ámbito pero una instancia &null; se convierten + en estáticos, y los cierres no estáticos sin ámbito a los que se les da una + instancia no nula reciben como ámbito una clase no especificada. + - + Si solo se desea duplicar la función anónima, puede utilizarse el clonado en su lugar. - + @@ -58,21 +59,22 @@ newThis - - El objeto al que vincular la función anónima, o &null; para una cierre estática. - + + El objeto al que vincular la función anónima, o &null; para que el cierre + quede desvinculado. + newScope - - El contexto de clase a asociar con la cierre, o 'static' para conservar el - contexto actual. Si se pasa un objeto, su tipo será utilizado. + + El ámbito de clase a asociar con el cierre, o 'static' para conservar el + ámbito actual. Si se pasa un objeto, su tipo será utilizado. Esto determina la visibilidad de los métodos protegidos y privados del objeto vinculado. No está permitido pasar (un objeto de) una clase interna para - este argumento. - + este parámetro. + @@ -80,10 +82,34 @@ &reftitle.returnvalues; - - Devuelve la nueva cierre en forma de objeto Closure, + + Devuelve el objeto Closure recién creado, o &null; en caso de error. - + + + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Vincular una instancia a un cierre estático, o vincular un método de una + jerarquía de clases incompatible, ahora está obsoleto (estos casos ya + emitían un E_WARNING). + + + + + @@ -105,7 +131,7 @@ class A public function getClosure() { - //Retorna una cierre vinculada a este objeto y contexto + //Retorna un cierre vinculado a este objeto y ámbito return function() { return $this->val; }; diff --git a/language/types/callable.xml b/language/types/callable.xml index 0e15604a96..d04b5376d5 100644 --- a/language/types/callable.xml +++ b/language/types/callable.xml @@ -1,5 +1,5 @@ - + Callables @@ -102,7 +102,7 @@ $double3 = fn($a) => $a * 2; // Usando Closure::fromCallable $double4 = Closure::fromCallable('double_function'); -// Utilizar clousure como función de devolución de retrollamada +// Utilizar closure como función de devolución de retrollamada // para duplicar el tamaño de cada elemento en nuestro rango $new_numbers = array_map($double1, range(1, 5)); print implode(' ', $new_numbers) . PHP_EOL; @@ -161,6 +161,8 @@ print implode(' ', $new_numbers); independiente del ámbito y siempre se puede invocar, mientras que un tipo callable puede depender del ámbito y puede que no se pueda invocar directamente. Closure es la forma preferida de crear callables. + A partir de PHP 8.5.0, Closure es un subtipo propio de + callable. @@ -228,7 +230,7 @@ call_user_func([$obj, 'myCallbackMethod']); // Tipo 4: Llamada a un método estático de clase call_user_func('MyClass::myCallbackMethod'); -// Type 5: Llamada a un método estático de clase usando la palabla clave ::class +// Type 5: Llamada a un método estático de clase usando la palabra clave ::class call_user_func([MyClass::class, 'myCallbackMethod']); // Tipo 6: Llamada a un método estático de clase relativo diff --git a/reference/outcontrol/functions/ob-start.xml b/reference/outcontrol/functions/ob-start.xml index 59d801d7e8..ca67e567ac 100644 --- a/reference/outcontrol/functions/ob-start.xml +++ b/reference/outcontrol/functions/ob-start.xml @@ -1,5 +1,5 @@ - + ob_start @@ -198,6 +198,31 @@ + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Intentar producir salida (por ejemplo con echo) + dentro de la retrollamada del manejador de salida de usuario ahora está + obsoleto. La advertencia de obsolescencia evita el manejador y se emite + directamente. + + + + + + + &reftitle.examples; @@ -210,7 +235,7 @@ function handler($buffer) { // reemplaza todas las patatas por zanahorias - return (str_replace("pommes de terre", "carottes", $buffer)); + return (str_replace("patatas", "zanahorias", $buffer)); } ob_start("handler"); @@ -218,7 +243,7 @@ ob_start("handler"); ?> -

Es como comparar zanahorias y patatas.

+

Es como comparar patatas y zanahorias.