diff --git a/appendices/about.xml b/appendices/about.xml index a8e7c1398..5268c158b 100644 --- a/appendices/about.xml +++ b/appendices/about.xml @@ -158,7 +158,7 @@ Devuelve el tamaño de la cadena $string. El primer (y aquí el único) parámetro a proporcionar a esta función es el parámetro string, que debe ser del tipo - &string;. + string. @@ -167,7 +167,7 @@ Devuelve el tamaño de la cadena $string. Tipo de valor devuelto por esta función, que es, en este caso, - un &integer; (es decir, el tamaño de una cadena se mide por + un int (es decir, el tamaño de una cadena se mide por un número). @@ -198,7 +198,7 @@ Devuelve el tamaño de la cadena $string. - ¿Qué significa esto? in_array devuelve + ¿Qué significa esto? in_array() devuelve un booléano &true; en caso de éxito (el parámetro needle se encontró en el array @@ -209,8 +209,8 @@ Devuelve el tamaño de la cadena $string. de diferentes tipos: por lo tanto, lleva la mención mixed. El parámetro needle (lo que estamos buscando) puede ser un valor escalar ( &string;, &integer;, - o float), o incluso un array. - haystack (el array, + o float), o incluso un array. + haystack (el array, en el que estamos buscando) es el segundo parámetro. El tercer parámetro, opcional, strict, @@ -396,7 +396,7 @@ Devuelve el tamaño de la cadena $string. Los contribuyentes a la documentación parten de los códigos fuente XML disponibles en &url.php.git.mirror;doc-en. - luego traducen a su idioma. No utilizan + luego traducen a su idioma. No utilizan las versiones generadas (como el HTML o el texto plano) ya que es el sistema de edición el que se encarga de hacer las conversiones del formato XML a un formato legible. diff --git a/appendices/comparisons.xml b/appendices/comparisons.xml index 4f50f2366..51e829616 100644 --- a/appendices/comparisons.xml +++ b/appendices/comparisons.xml @@ -17,9 +17,9 @@ Antes de utilizar estas tablas, es importante comprender los tipos y su significado. Por ejemplo, "42" es un - &string;, mientras que 42 es un - &integer;. &false; es bool mientras que - "false" es un &string;. + string, mientras que 42 es un + int. &false; es bool mientras que + "false" es un string. @@ -65,7 +65,7 @@ $x = ""; - &string; + string &true; &false; &true; @@ -129,7 +129,7 @@ $x = 1; - &integer; + int &false; &false; &true; @@ -137,7 +137,7 @@ $x = 42; - &integer; + int &false; &false; &true; @@ -145,7 +145,7 @@ $x = 0; - &integer; + int &true; &false; &true; @@ -153,7 +153,7 @@ $x = -1; - &integer; + int &false; &false; &true; @@ -161,7 +161,7 @@ $x = "1"; - &string; + string &false; &false; &true; @@ -169,7 +169,7 @@ $x = "0"; - &string; + string &true; &false; &true; @@ -177,7 +177,7 @@ $x = "-1"; - &string; + string &false; &false; &true; @@ -185,7 +185,7 @@ $x = "php"; - &string; + string &false; &false; &true; @@ -193,7 +193,7 @@ $x = "true"; - &string; + string &false; &false; &true; diff --git a/appendices/ini.core.xml b/appendices/ini.core.xml index 11111ccca..29426c942 100644 --- a/appendices/ini.core.xml +++ b/appendices/ini.core.xml @@ -195,15 +195,15 @@ string - + Esta directiva le permite deshabilitar ciertas funciones. Toma una lista de nombres de funciones separados por comas. - - + + Solo las funciones internas pueden deshabilitarse usando esta directiva. Las funciones definidas por el usuario no se ven afectadas. - - + + Esta directiva debe definirse en el &php.ini;. Por ejemplo, no puede definirse en el archivo &httpd.conf;. - + Esta directiva puede ser eludida y no debe considerarse una @@ -219,9 +219,12 @@ string - + Esta directiva le permite deshabilitar ciertas clases. Toma una lista de nombres de clases separados por comas. - + + + Solo las clases internas pueden deshabilitarse usando esta directiva. Las clases definidas por el usuario no se ven afectadas. + Esta directiva debe definirse en el &php.ini;. Por ejemplo, no puede definirse en el archivo &httpd.conf;. @@ -334,7 +337,7 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk - Verifica el BOM (Byte Order Mark) y mira si el archivo contiene caracteres multibyte válidos. Esta detección se realiza antes de que se ejecute la función __halt_compiler. Disponible solo en modo multibyte de Zend. + Verifica el BOM (Byte Order Mark) y mira si el archivo contiene caracteres multibyte válidos. Esta detección se realiza antes de que se ejecute la función __halt_compiler. Disponible solo en modo multibyte de Zend. @@ -525,7 +528,7 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk request_order "" - INI_SYSTEM|INI_PERDIR + INI_PERDIR @@ -732,7 +735,7 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk &ini.shorthandbytes; - Si el tamaño de los datos recibidos por el método POST es mayor que post_max_size, las superglobales $_POST y $_FILES estarán vacías. Esto se puede monitorear de diferentes formas, por ejemplo, pasando una variable $_GET al script que procesa los datos, es decir, <form action="edit.php?processed=1">, y luego verificar si $_GET['processed'] está definido. + Si el tamaño de los datos recibidos por el método POST es mayor que post_max_size, $_POST y $_FILES superglobales estarán vacías. Esto se puede monitorear de diferentes formas, por ejemplo, pasando una variable $_GET al script que procesa los datos, es decir, <form action="edit.php?processed=1">, y luego verificar si $_GET['processed'] está definido. @@ -799,7 +802,7 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk El valor especial none desactiva la adición automática. - Si el script termina con la función exit, no se realizará la adición automática. + Si el script termina con la función exit, no se realizará la adición automática. @@ -1018,7 +1021,7 @@ Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unk - Especifica una lista de directorios donde las funciones require, include, fopen, file, readfile y file_get_contents buscarán los archivos. El formato es idéntico a la variable de entorno del sistema PATH: una lista de directorios separados por dos puntos (:) en Unix o por un punto y coma (;) en Windows. + Especifica una lista de directorios donde las funciones require, include, fopen, file, readfile y file_get_contents buscarán los archivos. El formato es idéntico a la variable de entorno del sistema PATH: una lista de directorios separados por dos puntos en Unix o por un punto y coma en Windows. PHP considera cada entrada del camino de inclusión por separado al buscar archivos para incluir. Verificará el primer camino y, si no encuentra el archivo, verificará el siguiente camino, hasta encontrar el archivo para incluir o devolver una alerta de tipo E_WARNING o de tipo E_ERROR usando la función set_include_path. @@ -1080,7 +1083,7 @@ include_path = ".:${USER}/pear/php" Cuando un script intenta acceder a un archivo con, por ejemplo, la función include o la función fopen, la ruta al archivo se analiza. Cuando el archivo se encuentra fuera de la estructura de directorios especificada, PHP se negará a acceder a él. Todos los enlaces simbólicos se resuelven, por lo que no es posible eludir esta restricción con un enlace simbólico. Si el archivo no existe, entonces el enlace simbólico no se puede resolver y el nombre del archivo se compara con . - La opción puede afectar más que las funciones del sistema de archivos; por ejemplo, si MySQL está configurado para usar el controlador mysqlnd, LOAD DATA INFILE se verá afectado por la opción . La mayoría de las extensiones de PHP usan la opción open_basedir de esta manera. + La opción puede afectar más que las funciones del sistema de archivos; por ejemplo, si MySQL está configurado para usar el controlador mysqlnd, LOAD DATA INFILE se verá afectado por la opción . La mayoría de las extensiones de PHP usan la opción open_basedir de esta manera. El valor especial . indica que se usará el directorio actual del script como directorio base. Sin embargo, esto es ligeramente peligroso en el sentido de que el directorio actual puede cambiarse fácilmente con la función chdir. @@ -1099,10 +1102,10 @@ include_path = ".:${USER}/pear/php" - puede afinarse en el momento de la ejecución. Esto significa que si se establece en /www/ en el archivo &php.ini;, un script puede afinar la configuración en /www/tmp/ en el momento de la ejecución usando la función ini_set. Al recorrer varios directorios, puede usar la constante PATH_SEPARATOR según el sistema operativo. + open_basedir puede afinarse en el momento de la ejecución. Esto significa que si open_basedir se establece en /www/ en el archivo &php.ini;, un script puede afinar la configuración en /www/tmp/ en el momento de la ejecución usando la función ini_set. Al recorrer varios directorios, puede usar la constante PATH_SEPARATOR según el sistema operativo. - A partir de PHP 8.3.0, ya no acepta rutas que contengan el directorio padre (..) cuando se establece en tiempo de ejecución. + A partir de PHP 8.3.0, ya no acepta rutas que contengan el directorio padre (..) cuando se establece en tiempo de ejecución usando ini_set. @@ -1125,7 +1128,7 @@ include_path = ".:${USER}/pear/php" - El directorio raíz de PHP en el servidor. Solo se usa si no está vacío. Si PHP no se compiló con FORCE_REDIRECT, debe definir el doc_root si usa PHP como CGI bajo cualquier servidor web (distinto de IIS). Alternativamente, puede usar la configuración cgi.force_redirect. + El directorio raíz de PHP en el servidor. Solo se usa si no está vacío. Si PHP no se compiló con FORCE_REDIRECT, debe definir el doc_root si usa PHP como CGI bajo cualquier servidor web (distinto de IIS). Alternativamente, puede usar la configuración cgi.force_redirect. @@ -1207,7 +1210,7 @@ include_path = ".:${USER}/pear/php" - Controla si PHP CGI verifica la línea que comienza con #! (shebang) en la parte superior del script ejecutado. Esta línea es necesaria si el script está destinado a ejecutarse de forma independiente y a través de un PHP CGI. PHP en modo CGI no lee esta línea y omite su contenido si esta directiva está activa. + Controla si PHP CGI verifica la línea que comienza con #! (shebang) en la parte superior del script ejecutado. Esta línea es necesaria si el script está destinado a ejecutarse de forma independiente y a través de un PHP CGI. PHP en modo CGI no lee esta línea y omite su contenido si esta directiva está activa. @@ -1231,7 +1234,7 @@ include_path = ".:${USER}/pear/php" - Proporciona un real PATH_INFO/PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED en SCRIPT_FILENAME y no llenar PATH_INFO. Para obtener más información sobre PATH_INFO, consulte las especificaciones CGI. Si se establece en 1, PHP CGI corregirá este camino según las especificaciones. Si se establece en 0, PHP aplicará el comportamiento anterior. De manera predeterminada, esta directiva está activada. Debe modificar sus scripts para usar SCRIPT_FILENAME en lugar de PATH_TRANSLATED. + Proporciona un real PATH_INFO/PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED en SCRIPT_FILENAME y no llenar PATH_INFO. Para obtener más información sobre PATH_INFO, consulte las especificaciones CGI. Si se establece en 1, PHP CGI corregirá este camino según las especificaciones. Si se establece en 0, PHP aplicará el comportamiento anterior. De manera predeterminada, esta directiva está activada. Debe modificar sus scripts para usar SCRIPT_FILENAME en lugar de PATH_TRANSLATED. @@ -1243,7 +1246,7 @@ include_path = ".:${USER}/pear/php" - cgi.force_redirect es necesario por razones de seguridad al usar PHP en modo CGI bajo la mayoría de los servidores web. Si no lo establece, PHP lo activará automáticamente de manera predeterminada. Puede desactivarlo bajo su propio riesgo. + cgi.force_redirect es necesario por razones de seguridad al usar PHP en modo CGI bajo la mayoría de los servidores web. Si no lo establece, PHP lo activará automáticamente de manera predeterminada. Puede desactivarlo bajo su propio riesgo. diff --git a/appendices/ini.list.xml b/appendices/ini.list.xml index e668a98f0..bb075f49f 100644 --- a/appendices/ini.list.xml +++ b/appendices/ini.list.xml @@ -39,13 +39,13 @@ arg_separator.input - "&" + "&" INI_PERDIR arg_separator.output - "&" + "&" INI_ALL @@ -172,49 +172,49 @@ default_charset - "UTF-8" + "UTF-8" INI_ALL Por defecto "UTF-8". input_encoding - "" + "" INI_ALL output_encoding - "" + "" INI_ALL internal_encoding - "" + "" INI_ALL default_mimetype - "text/html" + "text/html" INI_ALL default_socket_timeout - "60" + "60" INI_ALL disable_classes - "" + "" &php.ini; solo disable_functions - "" + "" &php.ini; solo @@ -234,13 +234,13 @@ docref_ext - "" + "" INI_ALL docref_root - "" + "" INI_ALL @@ -258,7 +258,7 @@ enable_post_data_reading - On + "On" INI_PERDIR @@ -282,7 +282,7 @@ error_log_mode - 0o644 + 0o644 INI_ALL Disponible a partir de PHP 8.2.0 @@ -301,7 +301,7 @@ exit_on_timeout - "" + "" INI_ALL @@ -320,7 +320,7 @@ extension_dir - "/path/to/php" + "/path/to/php" INI_SYSTEM @@ -345,7 +345,7 @@ from - "" + "" INI_ALL @@ -353,37 +353,37 @@ hard_timeout - "2" + "2" INI_SYSTEM Disponible a partir de 7.1.0. highlight.comment - "#FF8000" + "#FF8000" INI_ALL highlight.default - "#0000BB" + "#0000BB" INI_ALL highlight.html - "#000000" + "#000000" INI_ALL highlight.keyword - "#007700" + "#007700" INI_ALL highlight.string - "#DD0000" + "#DD0000" INI_ALL @@ -422,7 +422,7 @@ include_path - ".:/path/to/php/pear" + ".:/path/to/php/pear" INI_ALL @@ -442,7 +442,7 @@ log_errors_max_len - "1024" + "1024" INI_ALL @@ -455,36 +455,36 @@ mail.force_extra_parameters &null; - &php.ini; solo + INI_SYSTEM mail.log - "" + "" INI_PERDIR max_execution_time - "30" + "30" INI_ALL max_input_nesting_level - "64" + "64" INI_PERDIR max_input_vars - 1000 + 1000 INI_PERDIR max_input_time - "-1" + "-1" INI_PERDIR @@ -493,7 +493,7 @@ memory_limit - "128M" + "128M" INI_ALL @@ -528,25 +528,25 @@ post_max_size - "8M" + "8M" INI_PERDIR precision - "14" + "14" INI_ALL realpath_cache_size - "16K" + "16K" INI_SYSTEM realpath_cache_ttl - "120" + "120" INI_SYSTEM @@ -570,7 +570,7 @@ request_order - "" + "" INI_PERDIR @@ -583,16 +583,16 @@ sendmail_path - "/usr/sbin/sendmail -t -i" + "/usr/sbin/sendmail -t -i" INI_SYSTEM serialize_precision - "-1" + "-1" INI_ALL - Anterior a PHP 7.1.0, el valor predeterminado era 17. + Anterior a PHP 7.1.0, el valor predeterminado era 17. @@ -604,13 +604,13 @@ SMTP - "localhost" + "localhost" INI_ALL smtp_port - "25" + "25" INI_ALL @@ -624,25 +624,25 @@ syslog.facility - "LOG_USER" + "LOG_USER" INI_SYSTEM Disponible a partir de PHP 7.3.0. syslog.filter - "no-ctrl" + "no-ctrl" INI_ALL Disponible a partir de PHP 7.3.0. syslog.ident - "php" + "php" INI_SYSTEM Disponible a partir de PHP 7.3.0. sys_temp_dir - "" + "" INI_SYSTEM @@ -657,19 +657,19 @@ uploadprogress.file.filename_template - "/tmp/upt_%s.txt" + "/tmp/upt_%s.txt" INI_ALL upload_max_filesize - "2M" + "2M" INI_PERDIR max_file_uploads - 20 + 20 INI_SYSTEM @@ -681,15 +681,15 @@ url_rewriter.hosts - "" + "" INI_ALL Disponible a partir de PHP 7.1.0. url_rewriter.tags - "form=" + "form=" INI_ALL - Anterior a PHP 7.1.0, el valor predeterminado era "a=href,area=href,frame=src,form=,fieldset=". + Anterior a PHP 7.1.0, el valor predeterminado era "a=href,area=href,frame=src,form=,fieldset=". user_agent @@ -705,20 +705,20 @@ user_ini.cache_ttl - "300" + "300" INI_SYSTEM user_ini.filename - ".user.ini" + ".user.ini" INI_SYSTEM variables_order - "EGPCS" + "EGPCS" INI_PERDIR @@ -748,7 +748,7 @@ yaz.keepalive - "120" + "120" INI_ALL @@ -794,6 +794,12 @@ INI_PERDIR + + zend.reserved_stack_size + "0" + INI_SYSTEM + Disponible a partir de PHP 8.3.0 + zend.script_encoding &null; diff --git a/appendices/ini.xml b/appendices/ini.xml index 33c835685..2ee671fd8 100644 --- a/appendices/ini.xml +++ b/appendices/ini.xml @@ -1,4 +1,4 @@ - + diff --git a/appendices/migration56/new-features.xml b/appendices/migration56/new-features.xml index 8401c0f5f..30341d578 100644 --- a/appendices/migration56/new-features.xml +++ b/appendices/migration56/new-features.xml @@ -48,7 +48,7 @@ El valor de TRES es 3 - También es posible definir una constante &array; usando la palabra clave const: + También es posible definir una constante array usando la palabra clave const: diff --git a/appendices/migration70/changed-functions.xml b/appendices/migration70/changed-functions.xml index 465dacbd3..a371b20f0 100644 --- a/appendices/migration70/changed-functions.xml +++ b/appendices/migration70/changed-functions.xml @@ -23,7 +23,7 @@ La función dirname ahora toma un segundo parámetro opcional, - depth, para indicar el número de niveles más alto (en relación con el directorio actual) para alcanzar el nombre del directorio en el árbol. + depth, para obtener el nombre del directorio a depth niveles por encima del directorio actual. @@ -70,7 +70,7 @@ substr y iconv_substr ahora devuelven una &string; vacía, si - la longitud de la cadena es igual a $start. + la longitud de la cadena es igual a $start. diff --git a/appendices/migration70/incompatible/integers.xml b/appendices/migration70/incompatible/integers.xml index 5f6c502e9..b3bb76248 100644 --- a/appendices/migration70/incompatible/integers.xml +++ b/appendices/migration70/incompatible/integers.xml @@ -4,7 +4,7 @@ - Modificaciones en la gestión de &integer; + Modificaciones en la gestión de <type>int</type> Literales octales no válidos @@ -55,7 +55,7 @@ Stack trace: Los desplazamientos de bits (en ambos sentidos) más allá del ancho de bits de un - &integer; siempre devolverán 0. Anteriormente, el comportamiento de estos + int siempre devolverán 0. Anteriormente, el comportamiento de estos desplazamientos dependía de la arquitectura. diff --git a/appendices/migration70/incompatible/strings.xml b/appendices/migration70/incompatible/strings.xml index 4209da8cf..005f5b5ef 100644 --- a/appendices/migration70/incompatible/strings.xml +++ b/appendices/migration70/incompatible/strings.xml @@ -4,7 +4,7 @@ - Modificaciones en el manejo de &string; + Modificaciones en el manejo de <type>string</type> Las cadenas hexadecimales ya no se consideran numéricas @@ -47,9 +47,9 @@ string(3) "foo" - filter_var puede ser utilizado para verificar si una &string; - contiene un número hexadecimal, y también para convertir una &string; de este tipo - en un &integer;: + filter_var puede ser utilizado para verificar si una string + contiene un número hexadecimal, y también para convertir una cadena de este tipo + en un int: diff --git a/appendices/migration70/incompatible/variable-handling.xml b/appendices/migration70/incompatible/variable-handling.xml index 3664d50f0..0eab34fc3 100644 --- a/appendices/migration70/incompatible/variable-handling.xml +++ b/appendices/migration70/incompatible/variable-handling.xml @@ -194,10 +194,10 @@ list($x, list(), $y) = $a; - <function>list</function> no puede descomponer &string; + <function>list</function> no puede descomponer <type>string</type>s - list ya no puede descomponer variables de &string;. + list ya no puede descomponer variables de string. Debe usarse str_split en su lugar. diff --git a/appendices/migration70/new-features.xml b/appendices/migration70/new-features.xml index a658f8aad..4b525345c 100644 --- a/appendices/migration70/new-features.xml +++ b/appendices/migration70/new-features.xml @@ -632,7 +632,7 @@ session_start([ - + <function>preg_replace_callback_array</function> diff --git a/appendices/migration71/incompatible.xml b/appendices/migration71/incompatible.xml index e0d40f599..bd607fab2 100644 --- a/appendices/migration71/incompatible.xml +++ b/appendices/migration71/incompatible.xml @@ -325,7 +325,7 @@ array(2) { Parámetro $options de unserialize() - El elemento allowed_classes del parámetro $options de unserialize ahora es estrictamente tipado, es decir, si se da un valor distinto de un array o un boolean, unserialize() devuelve false y emite un E_WARNING. + El elemento allowed_classes del parámetro $options de unserialize ahora es estrictamente tipado, es decir, si se da un valor distinto de un array o un bool, unserialize() devuelve false y emite un E_WARNING. diff --git a/appendices/migration73/incompatible.xml b/appendices/migration73/incompatible.xml index 575f3e442..0ddb195d8 100644 --- a/appendices/migration73/incompatible.xml +++ b/appendices/migration73/incompatible.xml @@ -71,7 +71,7 @@ while ($foo) { Los accesos de &array; del tipo $obj["123"], donde $obj implementa ArrayAccess y - "123" es una &string; de &integer; literal ya no + "123" es una string de &integer; literal ya no resultarán en una conversión implícita a &integer;, es decir, $obj->offsetGet("123") será llamado en lugar de $obj->offsetGet(123). Esto corresponde al comportamiento @@ -314,8 +314,8 @@ foo(...gen()); Las operaciones matemáticas que implican los objetos SimpleXML tratarán ahora el texto - como un &integer; o un &float;, según lo que sea más apropiado. - Anteriormente, los valores eran tratados como un &integer; sin condición. + como un int o un float, según lo que sea más apropiado. + Anteriormente, los valores eran tratados como un int sin condición. diff --git a/appendices/migration74/new-features.xml b/appendices/migration74/new-features.xml index db925e757..e3d1864e1 100644 --- a/appendices/migration74/new-features.xml +++ b/appendices/migration74/new-features.xml @@ -26,9 +26,9 @@ class User { El ejemplo anterior asegura que $user->id solo puede - recibir valores de tipo &integer; y + recibir valores de tipo int y $user->name solo puede recibir valores de tipo - &string;. + string. diff --git a/appendices/migration80/deprecated.xml b/appendices/migration80/deprecated.xml index e40e34cc3..f0a624214 100644 --- a/appendices/migration80/deprecated.xml +++ b/appendices/migration80/deprecated.xml @@ -96,7 +96,10 @@ function test(?A $a, $b) {} // Recommended libxml_disable_entity_loader ha sido desaprobada. Como ahora se requiere libxml 2.9.0, la carga de entidades externas está garantizada como deshabilitada por defecto, y esta función ya - no es necesaria para proteger contra ataques XXE. + no es necesaria para proteger contra ataques XXE, a menos que se utilice + LIBXML_NOENT. + En ese caso, se recomienda refactorizar el código usando + libxml_set_external_entity_loader para suprimir la carga de entidades externas. diff --git a/appendices/migration80/incompatible.xml b/appendices/migration80/incompatible.xml index c2662dfe8..266e572ee 100644 --- a/appendices/migration80/incompatible.xml +++ b/appendices/migration80/incompatible.xml @@ -72,6 +72,11 @@ match es ahora una palabra reservada. + + + mixed ahora es una palabra reservada, por lo que no puede ser utilizada para nombrar una clase, interfaz o trait, y tampoco está permitida en espacios de nombres. + + Los fallos de aserción ahora lanzan una excepción por defecto. Si se desea el comportamiento @@ -302,6 +307,12 @@ function test(int $arg = null) {} Intentar acceder a constantes no calificadas que no están definidas. Anteriormente, el acceso a constantes no calificadas resultaba en una advertencia y se interpretaban como cadenas. + + Pasar un número incorrecto de argumentos a una función interna no variádica lanzará un ArgumentCountError. + + + Pasar tipos no contables inválidos a count lanzará un TypeError. + @@ -798,15 +809,34 @@ $array["key"]; - DOMNameList - DomImplementationList - DOMConfiguration - DomError - DomErrorHandler - DOMImplementationSource - DOMLocator - DOMUserDataHandler - DOMTypeInfo + DOMNameList + DomImplementationList + DOMConfiguration + DomError + DomErrorHandler + DOMImplementationSource + DOMLocator + DOMUserDataHandler + DOMTypeInfo + DOMStringExtend + + + + Los métodos no implementados de la extensión DOM que no tenían comportamiento han sido eliminados: + + + + DOMNamedNodeMap::setNamedItem + DOMNamedNodeMap::removeNamedItem + DOMNamedNodeMap::setNamedItemNS + DOMNamedNodeMap::removeNamedItemNS + DOMText::replaceWholeText + DOMNode::compareDocumentPosition + DOMNode::isEqualNode + DOMNode::getFeature + DOMNode::setUserData + DOMNode::getUserData + DOMDocument::renameNode @@ -1604,19 +1634,19 @@ echo file_get_contents('http://example.org', false, $ctx); - Los tokens T_COMMENT ya no incluirán un salto de línea al final. El salto - de línea será parte del siguiente token T_WHITESPACE. Cabe señalar que - T_COMMENT no siempre va seguido de un espacio en blanco, también puede ir - seguido de T_CLOSE_TAG o del final del archivo. + Los tokens T_COMMENT ya no incluirán un salto de línea al final. El salto + de línea será parte del siguiente token T_WHITESPACE. Cabe señalar que + T_COMMENT no siempre va seguido de un espacio en blanco, también puede ir + seguido de T_CLOSE_TAG o del final del archivo. Los nombres con espacio de nombres ahora se representan utilizando los tokens - T_NAME_QUALIFIED (Foo\Bar), - T_NAME_FULLY_QUALIFIED (\Foo\Bar) y - T_NAME_RELATIVE (namespace\Foo\Bar). - T_NS_SEPARATOR solo se usa para separadores de espacio de nombres + T_NAME_QUALIFIED (Foo\Bar), + T_NAME_FULLY_QUALIFIED (\Foo\Bar) y + T_NAME_RELATIVE (namespace\Foo\Bar). + T_NS_SEPARATOR solo se usa para separadores de espacio de nombres independientes, y solo es sintácticamente válido en conjunto con declaraciones de uso de grupo. diff --git a/appendices/migration80/new-features.xml b/appendices/migration80/new-features.xml index 05c913788..5aade23be 100644 --- a/appendices/migration80/new-features.xml +++ b/appendices/migration80/new-features.xml @@ -71,8 +71,7 @@ - - Se ha añadido la clase WeakMap. + Se ha añadido la clase WeakMap. @@ -233,6 +232,11 @@ class ChildClass extends ParentClass { (int) $resource. Proporciona la misma funcionalidad con una API más clara. + + + Se ha añadido InternalIterator. + + @@ -339,7 +343,7 @@ class ChildClass extends ParentClass { Se ha añadido soporte para Cryptographic Message Syntax (CMS) (RFC 5652) compuesto por funciones para cifrado, descifrado, firma, verificación y lectura. La API - es similar a la API de las funciones PKCS #7 con la adición de nuevas constantes de codificación: + es similar a la API de las funciones PKCS #7 con la adición de nuevas constantes de codificación: OPENSSL_ENCODING_DER, OPENSSL_ENCODING_SMIME y OPENSSL_ENCODING_PEM: @@ -352,7 +356,7 @@ class ChildClass extends ParentClass { los resultados al archivo proporcionado. - openssl_cms_read exporta el archivo CMS a un array de certificados PEM. + openssl_cms_read exporta el archivo CMS a un array de certificados PEM. openssl_cms_sign firma el mensaje MIME en el archivo con un certificado y una clave diff --git a/appendices/migration80/other-changes.xml b/appendices/migration80/other-changes.xml index e3879aec6..d90765b2d 100644 --- a/appendices/migration80/other-changes.xml +++ b/appendices/migration80/other-changes.xml @@ -38,6 +38,17 @@ + + Standard + + + Las funciones matemáticas abs, ceil, + floor y round ahora respetan correctamente + la directiva strict_types. + Anteriormente, coercionaban el primer argumento incluso en modo de tipo estricto. + + + Zip @@ -63,7 +74,7 @@ ZipArchive::addEmptyDir, ZipArchive::addFile and ZipArchive::addFromString methods have a new flags argument. This allows managing name encoding - (ZipArchive::FL_ENC_*) and entry replacement + (ZipArchive::FL_ENC_*) and entry replacement (ZipArchive::FL_OVERWRITE). diff --git a/appendices/migration81/constants.xml b/appendices/migration81/constants.xml index 0714850b5..f569daabc 100644 --- a/appendices/migration81/constants.xml +++ b/appendices/migration81/constants.xml @@ -147,22 +147,22 @@ - - Tokenizer + + Standard - T_READONLY + IMAGETYPE_AVIF - - Standard + + Tokenizer - IMAGETYPE_AVIF + T_READONLY diff --git a/appendices/migration81/deprecated.xml b/appendices/migration81/deprecated.xml index 38ea2ece0..2c93755b7 100644 --- a/appendices/migration81/deprecated.xml +++ b/appendices/migration81/deprecated.xml @@ -96,7 +96,7 @@ function &test(): void {} Tal función es contradictoria, y ya emite el - E_NOTICE siguiente cuando se llama: + E_NOTICE siguiente cuando se llama: Only variable references should be returned by reference. diff --git a/appendices/migration81/incompatible.xml b/appendices/migration81/incompatible.xml index 88af65b0f..63378d931 100644 --- a/appendices/migration81/incompatible.xml +++ b/appendices/migration81/incompatible.xml @@ -29,7 +29,7 @@ - Cuando un método que utiliza variables static es heredado + Cuando un método que utiliza variables static es heredado (pero no sobrescrito), el método heredado compartirá ahora las variables. diff --git a/appendices/migration82/incompatible.xml b/appendices/migration82/incompatible.xml index e360f3c8e..16316c7f7 100644 --- a/appendices/migration82/incompatible.xml +++ b/appendices/migration82/incompatible.xml @@ -16,7 +16,7 @@ - Los símbolos numéricos en los formatos relativos + Los símbolos number en los formatos relativos ya no aceptan signos múltiples, por ejemplo +-2. diff --git a/appendices/migration83.xml b/appendices/migration83.xml index 38db9450f..87a04305d 100644 --- a/appendices/migration83.xml +++ b/appendices/migration83.xml @@ -7,7 +7,7 @@ Esta nueva versión menor aporta un cierto número de nuevas funcionalidades y - algunas incompatibilidades + algunas incompatibilidades que deberían ser probadas antes de cambiar de versión de PHP en entornos de producción. diff --git a/appendices/migration83/deprecated.xml b/appendices/migration83/deprecated.xml index bb21b020f..881acf57e 100644 --- a/appendices/migration83/deprecated.xml +++ b/appendices/migration83/deprecated.xml @@ -1,7 +1,7 @@ - + Funcionalidades obsoletas @@ -116,7 +116,7 @@ Llamar a ReflectionProperty::setValue con solo un parámetro está depreciado. - Para definir propiedades estáticas, pasar null como primer parámetro. + Para definir propiedades estáticas, pasar &null; como primer parámetro. diff --git a/appendices/migration83/incompatible.xml b/appendices/migration83/incompatible.xml index 1adc45bff..e6bfb5fd8 100644 --- a/appendices/migration83/incompatible.xml +++ b/appendices/migration83/incompatible.xml @@ -7,115 +7,162 @@ Núcleo de PHP - - Operadores de incremento/decremento más seguros + + Programas que estaban muy cerca de desbordar la pila de llamadas - El uso del operador de incremento - (++) en cadenas vacías, no numéricas - o no alfanuméricas está ahora depreciado. - Además, la incrementación de cadenas no numéricas está fuertemente depreciada. - Esto significa que ningún diagnóstico E_DEPRECATED se emite, - pero esta funcionalidad no debe usarse para producir nuevo código. - La nueva función str_increment debe usarse en su lugar. + Los programas que estaban muy cerca de desbordar la pila de llamadas ahora pueden lanzar + un Error cuando usan más de + zend.max_allowed_stack_size-zend.reserved_stack_size bytes de pila + (fiber.stack_size-zend.reserved_stack_size para fibras). + + + Ejecución de proc_get_status() varias veces - El uso del operador de decremento - (--) en cadenas vacías o no numéricas está ahora depreciado. + Ejecutar proc_get_status varias veces ahora siempre + devolverá el valor correcto en sistemas POSIX. Anteriormente, sólo la primera llamada + de la función devolvía el valor correcto. Ejecutar + proc_close después de proc_get_status + ahora también devolverá el código de salida correcto. Anteriormente esto devolvía + -1. + Internamente, esto funciona almacenando en caché el resultado en sistemas POSIX. + Si se requiere el comportamiento anterior, es posible verificar la + clave "cached" en el array devuelto por + proc_get_status para verificar si el resultado fue almacenado en caché. - - - get_class()/get_parent_class() llamadas sin argumentos + + Temporizadores de ejecución máxima de Zend + + Los temporizadores de ejecución máxima de Zend ahora están habilitados por defecto para compilaciones ZTS en + Linux. + + + + Uso de traits con propiedades estáticas - Llamar a get_class y get_parent_class - sin argumentos está ahora depreciado. + El uso de traits con propiedades estáticas ahora redeclarará las propiedades estáticas + heredadas de la clase padre. Esto creará un almacenamiento de propiedades estáticas separado + para la clase actual. Esto es análogo a agregar la propiedad estática a la clase directamente sin traits. - - - DBA + + Asignación de un índice negativo a un array vacío + + Asignar un índice negativo $n a un array vacío ahora garantizará que el + siguiente índice sea $n+1 en lugar de 0. + + - - Llamar a dba_fetch con $dba como - tercer argumento está ahora depreciado. - + + Verificación de varianza de visibilidad de constantes de clase + + La varianza de visibilidad de constantes de clase ahora se verifica correctamente cuando se hereda + de interfaces. + + + + + Entradas de WeakMap cuya clave se mapea a sí misma + + Las entradas de WeakMap cuya clave se mapea a sí misma (posiblemente + de forma transitiva) ahora pueden ser eliminadas durante la recolección de ciclos si la clave no + es alcanzable excepto iterando sobre el WeakMap (la alcanzabilidad mediante iteración se + considera débil). + Anteriormente, dichas entradas nunca se eliminaban automáticamente. + + - - FFI + + Date - Llamar a FFI::cast, FFI::new, - y FFI::type de manera estática está ahora depreciado. + La extensión DateTime ha introducido excepciones y errores específicos de la extensión Date + bajo las jerarquías DateError y + DateException, en lugar de advertencias y excepciones genéricas. + Esto mejora el manejo de errores, a expensas de tener que verificar errores y excepciones. - - Intl + + DOM - Las constantes U_MULTIPLE_SEPARATOR_SEPARATORS - han sido depreciadas, se recomienda usar la constante - U_MULTIPLE_SEPARATOR_SEPARATORS - en su lugar. + Llamar a DOMChildNode::after, + DOMChildNode::before, + DOMChildNode::replaceWith + en un nodo que no tiene padre ahora es una operación sin efecto en lugar de una excepción de jerarquía, + que es el comportamiento requerido por la especificación DOM. + - La constante NumberFormatter::TYPE_CURRENCY ha sido depreciada. + Usar los métodos de DOMParentNode + y DOMChildNode sin un documento ahora + funciona en lugar de lanzar un DOM_HIERARCHY_REQUEST_ERR + DOMException. + Esto está en línea con el comportamiento requerido por la especificación DOM. - - - - LDAP - Llamar a ldap_connect con - $hostname y $port separados está - depreciado. - + Llamar a DOMDocument::createAttributeNS sin especificar + un prefijo incorrectamente creaba un espacio de nombres predeterminado, colocando el elemento + dentro del espacio de nombres en lugar del atributo. Este error ahora está corregido. - - - MBString + + DOMDocument::createAttributeNS anteriormente + lanzaba incorrectamente un DOM_NAMESPACE_ERRNAMESPACE_ERR + DOMException cuando el prefijo ya se usaba para una + URI diferente. Ahora elige correctamente un prefijo diferente cuando hay un + conflicto de nombre de prefijo. + - Pasar un $width negativo a - mb_strimwidth está ahora depreciado. + Se añadieron nuevos métodos y propiedades a algunas clases DOM. + Si una clase de espacio de usuario hereda de estas clases y declara un método o propiedad + con el mismo nombre, las declaraciones deben ser compatibles. De lo contrario, se lanzará un + error de compilación típico sobre declaraciones incompatibles. + Ver la lista de nuevas funcionalidades + y las nuevas funciones para + una lista de los métodos y propiedades recién implementados. - - Phar + + FFI - Llamar a Phar::setStub con un - resource y un $length - está ahora depreciado. Estas llamadas deben ser reemplazadas por: - $phar->setStub(stream_get_contents($resource)); + Las funciones C que tienen un tipo de retorno void ahora devuelven &null; en lugar de + devolver el siguiente objeto object(FFI\CData:void) { } - - Random + + Opcache - La variante MT19937 MT_RAND_PHP está depreciada. - + La directiva INI opcache.consistency_checks + fue eliminada. Esta funcionalidad estaba rota con el JIT de rastreo, + así como con la caché de herencia, y ha estado deshabilitada sin forma de + habilitarla desde PHP 8.1.18 y PHP 8.2.5. + Tanto el JIT de rastreo como la caché de herencia pueden modificar la shm después de que el script + haya sido persistido al invalidar su suma de verificación. El intento de corrección omitía + los punteros modificables pero fue rechazado debido a la complejidad. Por esta + razón, se decidió eliminar la funcionalidad. - - Reflection + + Phar - Llamar a ReflectionProperty::setValue con solo un - parámetro está depreciado. - Para definir propiedades estáticas, pasar null como primer parámetro. + Los tipos de las constantes de la clase Phar ahora están declarados. @@ -123,38 +170,68 @@ Standard - La función assert_options está ahora depreciada. - - - Las constantes ASSERT_ACTIVE, ASSERT_BAIL, - ASSERT_CALLBACK, ASSERT_EXCEPTION, - y ASSERT_WARNING están ahora depreciadas. + La función range ha tenido varios cambios: + + Ahora se lanza un TypeError cuando se pasan objects, + resources, o arrays como entradas de límite. + Se lanza un ValueError más descriptivo cuando + se pasa 0 para $step. + Ahora se lanza un ValueError cuando se usa un + $step negativo para rangos crecientes. + Si $step es un float que puede interpretarse + como un int, ahora se hace así. + Ahora se lanza un ValueError si cualquier argumento + es infinito o NAN. + Ahora se emite un E_WARNING si + $start o $end es la cadena vacía. + El valor continúa siendo convertido al valor 0. + Ahora se emite un E_WARNING si + $start o $end tiene más de + un byte, solo si es una cadena no numérica. + Ahora se emite un E_WARNING si + $start o $end se convierte a un + entero porque la otra entrada de límite es un número. + (p.ej. range(5, 'z');). + Ahora se emite un E_WARNING si + $step es un float al intentar generar un rango de + caracteres, excepto si ambas entradas de límite son cadenas numéricas (p.ej. + range('5', '9', 0.5); no produce una advertencia). + range ahora produce una lista de caracteres si una + de las entradas de límite es un dígito de cadena en lugar de convertir la otra entrada + a int (p.ej. range('9', 'A');). + + + + +", "?", "@", "A"], a partir de PHP 8.3.0 +range('9', 'A'); // [9, 8, 7, 6, 5, 4, 3, 2, 1, 0], antes de PHP 8.3.0 +?> +]]> + + - Las directivas INI assert.* han sido depreciadas. - Ver la página - Cambios en la gestión del fichero INI - para más detalles. + number_format ahora maneja valores negativos de + $decimals redondeando + $num a abs($decimals) dígitos antes del + punto decimal. Anteriormente, los valores negativos de $decimals + eran ignorados. - - - - - SQLite3 - El uso de excepciones está ahora desaconsejado, y las advertencias serán eliminadas en el futuro. - Llamar a SQLite3::enableExceptions(false) suprimirá una advertencia de depreciación en esta versión. + La verificación de errores de flags de file ahora captura todos los flags inválidos. + Notablemente, FILE_APPEND era anteriormente aceptado silenciosamente. - - Zip + + SNMP - La constante ZipArchive::FL_RECOMPRESS está depreciada - y será eliminada en una versión futura de libzip. + Los tipos de las constantes de la clase SNMP ahora están declarados. diff --git a/appendices/migration83/other-changes.xml b/appendices/migration83/other-changes.xml index 69a31fc50..a59ec3d6d 100644 --- a/appendices/migration83/other-changes.xml +++ b/appendices/migration83/other-changes.xml @@ -305,7 +305,7 @@ pg_insert ahora lanza una ValueError - en lugar de una Exception cuando la tabla especificada es inválida. + en lugar de una E_WARNING cuando la tabla especificada es inválida. @@ -374,8 +374,8 @@ password_hash ahora encadena la excepción subyacente Random\RandomException - en la $previous Exception - de ValueError cuando falla la generación de sal. + como ValueError's $previous + Exception cuando falla la generación de sal. diff --git a/appendices/migration84/deprecated.xml b/appendices/migration84/deprecated.xml index dc32f4205..46a39746b 100644 --- a/appendices/migration84/deprecated.xml +++ b/appendices/migration84/deprecated.xml @@ -124,7 +124,7 @@ class _ {} - Las clases cuyo nombre comienza con un guion bajo no están + Las clases cuyo nombre comienza con un guion bajo no están desaprobadas: @@ -253,7 +253,7 @@ class _MyClass {} Llamar a intlgregcal_create_instance o IntlGregorianCalendar::__construct con más de dos argumentos ahora está desaprobado. - Usar intlgregcal_create_instance o + Usar IntlGregorianCalendar::createFromDate o IntlGregorianCalendar::createFromDateTime en su lugar. diff --git a/appendices/migration84/incompatible.xml b/appendices/migration84/incompatible.xml index bf7613a18..124d093bb 100644 --- a/appendices/migration84/incompatible.xml +++ b/appendices/migration84/incompatible.xml @@ -6,9 +6,9 @@ Salvo mención contraria en esta sección, - cada nueva función, - clase, interfaz, enumeración, - o constante + cada nueva función, + clase, interfaz, enumeración, + o constante puede provocar el lanzamiento de una excepción de redeclaración Error. @@ -51,7 +51,7 @@ - La modificación indirecta de propiedades de solo lectura en __clone() + La modificación indirecta de propiedades de solo lectura en __clone() ya no está permitida, por ejemplo, $ref = &$this->readonly. Ya estaba prohibido para la inicialización de solo lectura, y era un descuido en la implementación de la "reinicialización de solo lectura al clonar". @@ -244,7 +244,7 @@ resourcebundle_get, - ResourceBundle::get, y el acceso a índices en un + ResourceBundle::get, y el acceso a índices en un ResourceBundle ahora lanzan: @@ -358,6 +358,16 @@ + + Sesión + + + Establecer un valor no positivo para session.gc_divisor + o un valor negativo para session.gc_probability + emite ahora una advertencia. + + + SimpleXML @@ -675,16 +685,6 @@ - - Sesión - - - Establecer un valor no positivo para session.gc_divisor - o un valor negativo para session.gc_probability - emite ahora una advertencia. - - - SimpleXML @@ -694,7 +694,7 @@ Antes de PHP 8.4.0, algunos de sus métodos (por ejemplo, SimpleXMLElement::asXML o SimpleXMLElement::getName) y la conversión de tales - instancias a string reinicializaban implícitamente el iterador. + instancias a &string; reinicializaban implícitamente el iterador. Esto podía provocar bucles infinitos no intencionados porque el iterador se reinicializaba. diff --git a/appendices/migration84/other-changes.xml b/appendices/migration84/other-changes.xml index 89904bf2a..32b4fad92 100644 --- a/appendices/migration84/other-changes.xml +++ b/appendices/migration84/other-changes.xml @@ -485,7 +485,7 @@ - Se corrigió un error causado por el "preredondeo" de la función round(). + Se corrigió un error causado por el "preredondeo" de la función round. Anteriormente, usando "preredondeo" para manejar un valor como 0.285 (en realidad 0.28499999999999998) como un número decimal y redondearlo a 0.29. Sin embargo, el "preredondeo" redondeaba incorrectamente algunos números, diff --git a/appendices/migration85/incompatible.xml b/appendices/migration85/incompatible.xml index 3ff04727e..e2448cd1b 100644 --- a/appendices/migration85/incompatible.xml +++ b/appendices/migration85/incompatible.xml @@ -439,7 +439,7 @@ session_start es más estricta con respecto al argumento - options. Ahora lanza una ValueError si + del array. Ahora lanza una ValueError si el array no es un mapa hash, o una TypeError si el valor de read_and_close no es de un tipo válido compatible con int. @@ -539,8 +539,7 @@ - El parámetro $length de - SplFileObject::fwrite ahora admite valores nulos. + El parámetro SplFileObject::fwrite $length ahora admite valores nulos. El valor predeterminado cambió de 0 a &null;. diff --git a/appendices/migration85/other-changes.xml b/appendices/migration85/other-changes.xml index f8266b020..7fcc54d19 100644 --- a/appendices/migration85/other-changes.xml +++ b/appendices/migration85/other-changes.xml @@ -583,7 +583,6 @@ Mejorado el rendimiento de pack. - Improved pack performance. diff --git a/appendices/reserved.constants.core.xml b/appendices/reserved.constants.core.xml index 823e379ce..fc942c7ea 100644 --- a/appendices/reserved.constants.core.xml +++ b/appendices/reserved.constants.core.xml @@ -276,7 +276,7 @@ - El número de punto flotante positivo más pequeño x, de modo que x + 1.0 != 1.0. Disponible desde PHP 7.2.0. + El número de punto flotante positivo más pequeño x, de modo que x + 1.0 != 1.0. Disponible desde PHP 7.2.0. @@ -287,7 +287,7 @@ - El número de punto flotante positivo más pequeño. Si necesita la representación negativa más pequeña de un número de punto flotante, use - PHP_FLOAT_MAX. Disponible desde PHP 7.2.0. + El número de punto flotante positivo más pequeño. Si necesita la representación negativa más pequeña de un número de punto flotante, use - PHP_FLOAT_MAX. Disponible desde PHP 7.2.0. @@ -390,7 +390,7 @@ - + PHP_MANDIR (string) diff --git a/appendices/reserved.xml b/appendices/reserved.xml index 2883d54ce..323a07b35 100644 --- a/appendices/reserved.xml +++ b/appendices/reserved.xml @@ -218,10 +218,10 @@ - require + readonly (disponible a partir de PHP 8.1.0) * - readonly (disponible a partir de PHP 8.1.0) * + require require_once diff --git a/appendices/tokens.xml b/appendices/tokens.xml index 71f8fd925..f2acc0b89 100644 --- a/appendices/tokens.xml +++ b/appendices/tokens.xml @@ -115,7 +115,7 @@ defined('T_FN') || define('T_FN', 10001); || operadores lógicos - + T_BOOL_CAST (bool) o (boolean) conversión de tipos diff --git a/chapters/intro.xml b/chapters/intro.xml index 65b94bd64..5682a6956 100644 --- a/chapters/intro.xml +++ b/chapters/intro.xml @@ -77,7 +77,7 @@ echo "Hola, soy un script PHP!";
- ¿Qué puede hacer PHP? + ¿Qué puede hacer PHP? Todo. PHP está principalmente concebido para servir como lenguaje de script del lado del servidor, por lo que puede hacer todo lo que cualquier otro programa CGI puede hacer, como @@ -109,7 +109,7 @@ echo "Hola, soy un script PHP!"; sin la ayuda del servidor web y de un navegador. Solo se necesita el ejecutable PHP. Este uso es ideal para los scripts que se ejecutan regularmente con un cron en Unix o Linux o - un gestor de tareas (en Windows). Estos scripts + un gestor de tareas (en Windows). Estos scripts también pueden ser utilizados para realizar operaciones en ficheros de texto. Vea la sección sobre el uso de PHP en línea de comandos para más información. diff --git a/chapters/tutorial.xml b/chapters/tutorial.xml index 9d01d084e..e9dfb2d18 100644 --- a/chapters/tutorial.xml +++ b/chapters/tutorial.xml @@ -2,7 +2,7 @@ - Una introducción a PHP + Una introducción a PHP En esta sección, se pretende ilustrar los principios básicos @@ -19,7 +19,7 @@
- Su primera página PHP + Su primera página PHP Este tutorial presupone que PHP ya está instalado. Las instrucciones de instalación se pueden encontrar en la @@ -31,7 +31,7 @@ - Nuestro primer script PHP : <filename>hola.php</filename> + Nuestro primer script PHP : <filename>hola.php</filename> - Una nota sobre los retornos de línea + Una nota sobre los retornos de línea Los retornos de línea tienen un significado mínimo en HTML, sin embargo, siempre es una buena idea hacer que su HTML sea lo más bonito y cercano @@ -130,7 +130,7 @@ php -S localhost:8000 - Una nota sobre los editores de texto + Una nota sobre los editores de texto Existen muchos editores de texto y entornos de desarrollo (IDE) que se pueden utilizar para crear, editar @@ -144,7 +144,7 @@ php -S localhost:8000 - Una nota sobre los procesadores de texto + Una nota sobre los procesadores de texto Los procesadores de texto como StarOffice Writer, Microsoft Word y Abiword son muy malas opciones para editar scripts PHP. @@ -167,7 +167,7 @@ php -S localhost:8000 - Recuperación de la información del sistema desde PHP + Recuperación de la información del sistema desde PHP
- Trucos prácticos + Trucos prácticos Realicemos ahora algo más potente. Vamos a verificar el tipo de navegador que el visitante de nuestro sitio utiliza. @@ -208,7 +208,7 @@ phpinfo(); - Mostrar el contenido de una variable (elemento de array) + Mostrar el contenido de una variable (elemento de array) - Ejemplo utilizando las + <info><title>Ejemplo utilizando las <link linkend="language.control-structures">estructuras de control</link> y - las <link linkend="language.functions">funciones</link> + las funciones - Pasar del modo PHP al modo HTML y viceversa + Pasar del modo PHP al modo HTML y viceversa
- Utilizar un formulario + Utilizar un formulario Uno de los puntos fuertes de PHP es su capacidad para manejar formularios. El concepto básico que es importante entender es que todos los @@ -360,7 +360,7 @@ if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) { - Un formulario HTML simple + Un formulario HTML simple @@ -384,7 +384,7 @@ if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) { - Mostrar datos de un formulario + Mostrar datos de un formulario . @@ -429,7 +429,7 @@ Tienes 29 años.
- ¿Y después? + ¿Y después? Con lo que sabe, ahora es capaz de comprender lo esencial de la documentación PHP, y los diferentes scripts de ejemplo diff --git a/faq/installation.xml b/faq/installation.xml index ca7b77ab2..754b71cf6 100644 --- a/faq/installation.xml +++ b/faq/installation.xml @@ -468,34 +468,7 @@ cgi error: Hay varias formas de hacerlo. Si está usando Apache, lea las instrucciones específicas de instalación, o de lo contrario, - debe configurar la variable de entorno PHPRC: - - - En Windows: - - - Vaya a Panel de Control y abra el icono Sistema (Inicio → Configuración - → Panel de Control → Sistema, o directamente Inicio → Panel de Control - → Sistema) - - - Vaya a la pestaña Avanzado - - - Haga clic en el botón 'Variables de Entorno' - - - Revise el panel de 'Variables de Sistema' - - - Haga clic en 'Nuevo' e ingrese 'PHPRC' como nombre de variable, y el - directorio donde se encuentra &php.ini; como el valor de la variable - (p.ej., C:\php) - - - Presione OK y reinicie la máquina - - + debe configurar la variable de entorno PHPRC. diff --git a/faq/passwords.xml b/faq/passwords.xml index 25e90148f..f91dca821 100644 --- a/faq/passwords.xml +++ b/faq/passwords.xml @@ -6,20 +6,20 @@ Hash de contraseñas seguro Hash de Contraseñas - + Esta sección explica las razones que justifican el uso de funciones hash para proteger las contraseñas. También se explica cómo hacerlo de un modo efectivo. - + - + ¿Por qué debo usar hash en las contraseñas de los usuarios de mi aplicación? - + - + El hash de contraseñas es una de las consideraciones de seguridad más elementales que se deben llevar a la práctica al diseñar una aplicación que acepte contraseñas de los usuarios. Sin hashing, cualquier contraseña que se almacene en la @@ -27,152 +27,148 @@ lo que inmediatamente no sólo estaría comprometida la aplicación, sino también las cuentas de otros servicios de nuestros usuarios, siempre y cuando no utilicen contraseñas distintas. - - + + Si aplicamos un algoritmo hash a las contraseñas antes de almacenarlas en la base de datos, dificultamos al atacante el determinar la contraseña original, pese a que en un futuro podrá comparar el hash resultante con la contraseña original. - - + + Sin embargo, es importante tener en cuenta que el hecho de aplicar hash a las contraseñas sólo protege de que se vean comprometidas las contraseñas almacenadas, pero no las protege necesariamente de ser interceptadas por un código malicioso inyectado en la propia aplicación. - + - + ¿Por qué las funciones hash más comunes como md5 y sha1 no son adecuadas para las contraseñas? - + - + Los algoritmos hash como MD5, SHA1 o SHA256 están diseñados para ser muy rápidos y eficientes. Con las técnicas y equipos modernos, - es algo trivial extraer por fuerza bruta la salida de estos algoritmos, + es algo trivial extraer por fuerza bruta la salida de estos algoritmos, para determinar los datos de entrada originales. - - - Dada la velocidad con que los ordenadores actuales pueden "invertir" estos algoritmos + + + Dada la velocidad con que los ordenadores actuales pueden invertir estos algoritmos hash, muchos profesionales de la seguridad recomiendan encarecidamente no utilizarlas como funciones hash para contraseñas. - + - + ¿Qué hash debo aplicar a mis contraseñas, si las funciones hash más comunes no son adecuadas? - + - + Al aplicar un algoritmo hash, los dos factores más importantes son el coste computacional y la sal. Cuanto más cueste aplicar un algoritmo hash, más costará analizar su salida por fuerza bruta. - - + + PHP proporciona una API de hash de contraseñas nativa que maneja cuidadosamente el empleo de hash y la verificación de contraseñas de una manera segura. - - - Otra opción es la función crypt, la cual tiene - soporte para varios algoritmos hash. Al emplear - esta función, se garantiza que el algoritmo que se seleccione esté - disponible, debido a que PHP contiene implementaciones nativas de cada algoritomo - soportado, en caso de que el sistema no tenga soporte para uno o más de estos algoritmos. - - - El algoritmo recomendado para el empleo de contraseñas con hash es Blowfish, que - es también el predeterminado de la API de hash de contraseñas, que, aunque - es significativamente más caro computacionalmente que MD5 o SHA1, sigue - siendo escalable. - - - Observar que si se emplea crypt para verificar una - contraseña, será necesario tomar precauciones para evitar ataques de temporización - utilizando una comparación de string de tiempo constantes. Ni los - operadores == y === de PHP - ni strcmp llevan a cabo una comparación de string de tiempo - constante. Debido a que password_verify hará esto de forma - automática, se recomienda el empleo de la - API de hash de contraseñas nativa - siempre que sea posible. - - - - - - - ¿Qué es una sal (salt)? - - - - - Una sal criptográfica es un dato que se utiliza durante el proceso de hash - para eliminar la posibilidad de que el resultado pueda buscarse a partir de - una lista de pares precalculados de hash y sus entradas originales, conocidas - como tablas rainbow. - - - Es decir, una sal es un pequeño dato añadido que hace que los hash - sean significantemente más difíciles de crackear. Existe un gran número de - servicios online que ofrecen grandes listas de códigos hash precalculados, - junto con sus datos de entrada originales. El uso de una sal hace muy difícil o - imposible encontrar el hash resultante en cualquiera de estas listas. - - - password_hash creará una sal aleatoria si no se - proporciona una, siendo esta generalmente la estrategia más sencilla y - segura. - - - - - - - ¿Cómo almaceno mis sales? - - - - - Al utilizar password_hash o - crypt, el valor devuelto incluye la sal como parte - del hash generado. Este valor debería almacenarse tal cual en la - base de datos, ya que incluye información sobre la función hash que se - empleó y así proporcionarla directamente a - password_verify o crypt al - verificar contraseñas. - - - El siguiente diagrama muestra el formato de un valor devuelto por - crypt o password_hash. Como se - puede observar, son autocontenidos, con toda la información del - algoritmo y la sal requerida para futuras verificaciones de contraseñas. - - - - - Los componentes del valor devuelto por password_hash y crypt: en - orden, el algoritmo elegido, las opciones del algoritmo, la sal utilizada, - y la contraseña con hash. - - - - - - - - - + + + El algoritmo recomendado para el empleo de contraseñas con hash es Blowfish, que + es también el predeterminado de la API de hash de contraseñas, que, aunque + es significativamente más caro computacionalmente que MD5 o SHA1, sigue + siendo escalable. + + + La función crypt también está disponible para el hash de + contraseñas, pero solo se recomienda para la interoperabilidad con otros + sistemas. En su lugar, se recomienda encarecidamente el uso de la + API de hash de contraseñas nativa + siempre que sea posible. + + + + + + + ¿Qué es una sal (salt)? + + + + + Una sal criptográfica es un dato que se utiliza durante el proceso de hash + para eliminar la posibilidad de que el resultado pueda buscarse a partir de + una lista de pares precalculados de hash y sus entradas originales, conocidas + como tablas rainbow. + + + Es decir, una sal es un pequeño dato añadido que hace que los hash + sean significantemente más difíciles de crackear. Existe un gran número de + servicios online que ofrecen grandes listas de códigos hash precalculados, + junto con sus datos de entrada originales. El uso de una sal hace muy difícil o + imposible encontrar el hash resultante en cualquiera de estas listas. + + + password_hash creará una sal aleatoria si no se + proporciona una, siendo esta generalmente la estrategia más sencilla y + segura. + + + + + + + ¿Cómo almaceno mis sales? + + + + + Al utilizar password_hash o + crypt, el valor devuelto incluye la sal como parte + del hash generado. Este valor debería almacenarse tal cual en la + base de datos, ya que incluye información sobre la función hash que se + empleó y así proporcionarla directamente a + password_verify al + verificar contraseñas. + + + + Siempre debería utilizarse password_verify en lugar de + volver a aplicar hash y comparar el resultado con un hash almacenado, a fin de + evitar ataques de temporización. + + + + El siguiente diagrama muestra el formato de un valor devuelto por + crypt o password_hash. Como se + puede observar, son autocontenidos, con toda la información del + algoritmo y la sal requerida para futuras verificaciones de contraseñas. + + + + + Los componentes del valor devuelto por password_hash y crypt: en + orden, el algoritmo elegido, las opciones del algoritmo, la sal utilizada, + y la contraseña con hash. + + + + + + + + + diff --git a/features/file-upload.xml b/features/file-upload.xml index 11db4eab1..1446e23b8 100644 --- a/features/file-upload.xml +++ b/features/file-upload.xml @@ -314,25 +314,23 @@ foreach ($_FILES["pictures"]["error"] as $key => $error) { Carga por método PUT PHP soporta el método HTTP PUT utilizado por los navegadores para almacenar ficheros en un servidor. Las solicitudes de tipo PUT son mucho más simples que las cargas de ficheros utilizando el tipo POST, y se parecen a: - - Método PUT para las cargas de ficheros + - + Normalmente, esto significa que el servidor remoto guardará los datos que siguen en el fichero: /path/filename.html de su disco. Esto no es, por supuesto, muy seguro permitir que Apache o PHP sobrescriban cualquier fichero de la arborescencia. Para evitar esto, primero se debe indicar al servidor que se desea que un script PHP dado gestione la solicitud. Con Apache, hay una directiva para ello: Script. Puede ser colocada en cualquier lugar del fichero de configuración de Apache. En general, los webmasters la colocan en el bloque <Directory>, o tal vez en el bloque <VirtualHost>. La siguiente línea hará muy bien el trabajo: - - Directiva Apache para la carga por método PUT + - + Indica a Apache que debe enviar las solicitudes de carga por método PUT al script put.php. Por supuesto, esto presupone que se ha activado PHP para que maneje los ficheros de tipo .php, y que PHP está activo. El recurso de destino para todas las solicitudes PUT de este script debe ser el script mismo, y no el nombre del fichero que el fichero cargado debe tener. diff --git a/install/unix/apache2.xml b/install/unix/apache2.xml index d924a633f..74a351e8e 100644 --- a/install/unix/apache2.xml +++ b/install/unix/apache2.xml @@ -115,14 +115,15 @@ make install Ahora, configure y compile PHP. Será en este momento cuando se podrá personalizar PHP con las diversas opciones disponibles, - como la lista de extensiones a activar. En nuestro ejemplo, realizaremos + como la lista de extensiones a activar. Ejecute + ./configure --help para obtener la lista de opciones disponibles. En nuestro ejemplo, realizaremos una configuración simple, con Apache 2 y soporte MySQL. Si se ha construido Apache desde las fuentes, tal como se describe anteriormente, - el siguiente ejemplo debería ser correcto en cuanto a las rutas hacia los apxs, pero si - se ha instalado Apache de otra manera, se deberán tener en cuenta las especificidades y ajustar las rutas apxs en consecuencia. Tenga en cuenta que, según las distribuciones, podría ser necesario renombrar apxs a apxs2. + el siguiente ejemplo debería ser correcto en cuanto a las rutas hacia apxs, pero si + se ha instalado Apache de otra manera, se deberán tener en cuenta las especificidades y ajustar las rutas apxs en consecuencia. Tenga en cuenta que, según las distribuciones, podría ser necesario renombrar apxs a apxs2. @@ -137,14 +138,16 @@ make install Si se decide modificar las opciones de configuración después de la instalación, - se deberán ejecutar nuevamente las etapas "configure", "make" y "make install". + se deberán ejecutar nuevamente las etapas configure, make + y make install. Entonces solo se necesitará reiniciar Apache para que el nuevo módulo surta efecto. Una recompilación de Apache no es necesaria. - Tenga en cuenta que, salvo indicaciones contrarias, la etapa "make install" también instalará - PEAR, así como diversas herramientas PHP como phpsize, PHP CLI y + Tenga en cuenta que, salvo indicaciones contrarias, make install también instalará + PEAR, así como diversas herramientas PHP como + phpize, PHP CLI y mucho más. @@ -152,7 +155,7 @@ make install - Configurar el archivo php.ini + Configurar el archivo php.ini @@ -164,13 +167,13 @@ cp php.ini-development /usr/local/lib/php.ini - Se debe editar el archivo .ini para definir las opciones PHP. - Si se prefiere colocar este archivo en otro directorio, utilice + Se debe editar el archivo .ini para definir las opciones PHP. + Si se prefiere colocar php.ini en otro directorio, utilice la opción --with-config-file-path=/some/path en la etapa 5. - Si se elige el archivo php.ini-production, asegúrese de leer la lista + Si se elige el archivo php.ini-production, asegúrese de leer la lista de modificaciones correspondiente ya que puede afectar considerablemente la forma en que PHP funcionará. @@ -182,7 +185,7 @@ cp php.ini-development /usr/local/lib/php.ini Edite el archivo httpd.conf para cargar el módulo PHP. La ruta especificada a la derecha de la cadena LoadModule, debe corresponder a la ruta del sistema del módulo - PHP. La etapa "make install" anterior debería haber realizado esta operación + PHP. make install anterior debería haber realizado esta operación por usted, pero una simple verificación permitirá asegurarse. @@ -324,7 +327,7 @@ service httpd restart Apache puede ser compilado en modo multithread, seleccionando el MPM worker, en lugar del estándar - MPM prefork. Esto se hace añadiendo la siguiente opción al argumento de la comando "./configure", en la etapa 3 anterior : + MPM prefork. Esto se hace añadiendo la siguiente opción al argumento de ./configure, en la etapa 3 anterior: diff --git a/language/basic-syntax.xml b/language/basic-syntax.xml index 66e39bc20..1279574f1 100644 --- a/language/basic-syntax.xml +++ b/language/basic-syntax.xml @@ -258,8 +258,7 @@ Pero nueva línea ahora Se debe tener cuidado con los comentarios estilo 'C' anidados en grandes bloques cuando se comentan. - - Los comentarios de tipo C + ]]> - + diff --git a/language/context/http.xml b/language/context/http.xml index 9626fa482..d0b9de1ad 100644 --- a/language/context/http.xml +++ b/language/context/http.xml @@ -23,7 +23,7 @@ method - &string; + &string; @@ -63,12 +63,12 @@ user_agent - &string; + &string; Valor a enviar con el encabezado User-Agent:. Este valor - solo debe ser utilizado si el agente de usuario no está + solo debe ser utilizado si el agente de usuario no está especificado en la opción de contexto header anterior. @@ -81,7 +81,7 @@ content - &string; + &string; @@ -93,7 +93,7 @@ proxy - &string; + &string; @@ -105,7 +105,7 @@ request_fulluri - &boolean; + &boolean; @@ -153,7 +153,7 @@ protocol_version - &float; + &float; @@ -168,7 +168,7 @@ timeout - &float; + &float; @@ -185,7 +185,7 @@ ignore_errors - &boolean; + &boolean; diff --git a/language/context/ssl.xml b/language/context/ssl.xml index 78b8341bc..e6d2e5d60 100644 --- a/language/context/ssl.xml +++ b/language/context/ssl.xml @@ -36,7 +36,7 @@ verify_peer - &boolean; + &boolean; @@ -64,7 +64,7 @@ allow_self_signed - &boolean; + &boolean; diff --git a/language/control-structures/continue.xml b/language/control-structures/continue.xml index 597ad83e3..11bb8681a 100644 --- a/language/control-structures/continue.xml +++ b/language/control-structures/continue.xml @@ -14,7 +14,7 @@ En PHP, la estructura - switch + switch se considera un bucle por continue. continue se comporta como break (cuando no se pasa ningún argumento) pero emitirá una advertencia, ya que es probable que esto sea un error. Si un switch se encuentra dentro de un bucle, continue 2 continuará en la siguiente iteración del bucle externo. diff --git a/language/control-structures/declare.xml b/language/control-structures/declare.xml index 6325b7593..e47c8954d 100644 --- a/language/control-structures/declare.xml +++ b/language/control-structures/declare.xml @@ -84,8 +84,8 @@ declare(ticks=1); Un tick es un evento que interviene cada N comandos de bajo nivel tickables, ejecutados por el analizador en el bloque de declare. El valor de N es especificado - por la sintaxis ticks=N en el bloque de - directiva declare. + por la sintaxis ticks=N en la sección + directive del bloque declare. No todos los comandos son tickables. Típicamente, diff --git a/language/control-structures/elseif.xml b/language/control-structures/elseif.xml index 437f90f12..f9832a2b1 100644 --- a/language/control-structures/elseif.xml +++ b/language/control-structures/elseif.xml @@ -10,7 +10,7 @@ de if y de else. Como la expresión else, permite ejecutar una instrucción después de un if en el caso de que el "primer" - if sea evaluado como &false;. Sin embargo, + if sea evaluado como &false;. Sin embargo, a diferencia de la expresión else, solo ejecutará la instrucción si la expresión condicional elseif es evaluada como diff --git a/language/control-structures/for.xml b/language/control-structures/for.xml index 877c29abf..367b70d2e 100644 --- a/language/control-structures/for.xml +++ b/language/control-structures/for.xml @@ -8,7 +8,7 @@ Las bucles for son las más complejas en PHP. - Funcionan como las bucles for del lenguaje C(C++). + Funcionan como las bucles for del lenguaje C(C++). La sintaxis de las bucles for es la siguiente : @@ -47,7 +47,8 @@ for (expr1; expr2; expr3) (PHP considera implícitamente que vale &true;, como en C). Esto no es realmente muy útil, a menos que se desee terminar la bucle con la instrucción condicional - break. + break + en lugar de la expresión for. Considérese los siguientes ejemplos. Todos muestran los números enteros de diff --git a/language/control-structures/goto.xml b/language/control-structures/goto.xml index c5e56e336..e532d32b1 100644 --- a/language/control-structures/goto.xml +++ b/language/control-structures/goto.xml @@ -86,7 +86,7 @@ j hit 17 - Este <literal>goto</literal> no funciona + Esto no funcionará Si se define una ruta, absoluta (comenzando con una letra de unidad seguida de \ para Windows, o / para Unix/Linux) - o relativa (comenzando con . o ..), el include_path + o relativa (comenzando con . o ..), el include_path será ignorado. Por ejemplo, si un nombre de fichero comienza con ../, PHP buscará en el directorio padre para encontrar el fichero especificado. @@ -113,8 +113,7 @@ echo "Una $fruit $couleur"; // Una verte - Es importante señalar que cuando un fichero es - include o require, + Es importante señalar que cuando un fichero es incluido, los errores de análisis aparecerán en HTML al principio del fichero, y el análisis del fichero padre no será interrumpido. Por esta razón, el código @@ -182,7 +181,7 @@ include 'http://www.example.com/file.php?foo=1&bar=2'; file para información relacionada. - Manejo del retorno: include devuelve &false; en caso + Manejo del retorno: include devuelve FALSE en caso de error y emite un aviso. Las inclusiones exitosas, incluyendo si son sobrescritas por el fichero incluido, devuelven 1. Es posible ejecutar la estructura de lenguaje diff --git a/language/control-structures/return.xml b/language/control-structures/return.xml index a5ab363d9..1b436f00d 100644 --- a/language/control-structures/return.xml +++ b/language/control-structures/return.xml @@ -22,13 +22,13 @@ entonces el control se devuelve al script llamante. Además, si el fichero del script actual ha sido incluido a través de la instrucción include, - entonces el valor devuelto será utilizado como resultado de la instrucción + entonces el valor dado a return será devuelto como resultado de la llamada include. Si return es llamada desde el script principal, entonces la ejecución del script se detiene. Si el script actual es - + auto_prepend_file o - + auto_append_file en el fichero &php.ini;, entonces la ejecución del script se detiene. diff --git a/language/control-structures/switch.xml b/language/control-structures/switch.xml index 1a755882f..2de0e04c5 100644 --- a/language/control-structures/switch.xml +++ b/language/control-structures/switch.xml @@ -215,7 +215,7 @@ switch ($target) { - Para comparaciones más complejas, el valor &true; puede ser utilizado como valor de switch. + Para comparaciones más complejas, el valor &true; puede ser utilizado como valor de switch. O, alternativamente, bloques if-else en lugar de switch. diff --git a/language/expressions.xml b/language/expressions.xml index 51390b3d0..b043ef50f 100644 --- a/language/expressions.xml +++ b/language/expressions.xml @@ -12,15 +12,15 @@ Las formas más básicas de expresiones son las constantes y las variables. - Cuando se escribe "$a = 5", se está asignando '5' a - $a. '5', obviamente, - tiene el valor 5, o en otras palabras, '5' es una expresión con el - valor de 5 (en este caso, '5' es una constante entera). + Cuando se escribe $a = 5, se está asignando 5 a + $a. 5, obviamente, + tiene el valor 5, o en otras palabras 5 es una expresión con el + valor de 5 (en este caso, 5 es una constante entera). Después de esta asignación, se espera que el valor de $a sea 5 - también, por lo que si se escribe $b = $a, se espera que esto - se comporte tal como si se escribiera $b = 5. En otras palabras, + también, por lo que si se escribe $b = $a, se espera que esto + se comporte tal como si se escribiera $b = 5. En otras palabras, $a es también una expresión con el valor 5. Si todo funciona bien, esto es exactamente lo que sucederá. diff --git a/language/functions.xml b/language/functions.xml index c80505866..dc892b422 100644 --- a/language/functions.xml +++ b/language/functions.xml @@ -265,7 +265,7 @@ function takes_many_args( Si se desea que un argumento sea siempre pasado - por referencia, se puede añadir un '&' + por referencia, se puede añadir un '&' delante del parámetro en la declaración de la función: @@ -329,7 +329,7 @@ Servir un espresso. Los valores por defecto de parámetros pueden ser valores escalares, - &array;s, el tipo especial &null;, y a partir de PHP 8.1.0, + arrays, el tipo especial &null;, y a partir de PHP 8.1.0, objetos utilizando la sintaxis new ClassName(). @@ -564,7 +564,7 @@ echo sum(1, 2, 3, 4); ... también puede ser utilizado durante las llamadas de - funciones para extraer el &array; o la variable + funciones para extraer el array o la variable Traversable o el literal en la lista de argumentos: @@ -1028,8 +1028,7 @@ $func(); // Muestra "bar" PHP dispone de numerosas funciones y estructuras estándar. También hay funciones que requieren extensiones específicas de PHP, sin - las cuales se obtendrá el error fatal - undefined function. Por ejemplo, para utilizar las + las cuales se obtendrán errores fatales "undefined function". Por ejemplo, para utilizar las funciones de imágenes, tales como imagecreatetruecolor, se necesitará el soporte de GD en PHP. O bien, para utilizar @@ -1062,7 +1061,7 @@ $func(); // Muestra "bar" - Si los parámetros dados a una función no son correctos, como pasar un &array; cuando se espera un &string;, el valor devuelto + Si los parámetros dados a una función no son correctos, como pasar un array cuando se espera un string, el valor devuelto de la función es indefinido. En este caso, la función devolverá la mayoría de las veces un valor &null; pero esto es solo una convención y no puede ser considerado como una certeza. A partir de PHP 8.0.0, normalmente se lanza una excepción TypeError @@ -1116,7 +1115,7 @@ var_dump(str_contains("foobar", null)); Funciones anónimas - Las funciones anónimas, también llamadas closures o closures + Las funciones anónimas, también conocidas como closures, permiten la creación de funciones sin especificar su nombre. Son particularmente útiles como funciones de devolución de llamada callable, pero su utilización no se limita a este único uso. diff --git a/language/generators.xml b/language/generators.xml index edf044486..3e7343e7f 100644 --- a/language/generators.xml +++ b/language/generators.xml @@ -255,12 +255,12 @@ foreach (input_parser($input) as $id => $fields) { Producción de valores nulos - Yield puede ser llamado sin argumento para proporcionar un valor nulo + Yield puede ser llamado sin argumento para proporcionar un valor &null; con una clave automática. - Producción de valores nulos + Producción de valores &null; Ejemplo de sintaxis de espacios de nombres - Espacios de nombres Definición de espacios de nombres + Espacios de nombres Aunque el código PHP válido puede contenerse en un espacio de nombres, @@ -270,7 +270,7 @@ echo MonProjet\Connexion::start(); No puede existir ningún código PHP fuera de las llaves del espacio de nombres, - excepto para abrir una nueva instrucción declare. + excepto para abrir una nueva instrucción declare. Declaración de varios espacios de nombres con un espacio sin nombre (2) @@ -1453,10 +1453,10 @@ $a = new MaClasse; // instancia la clase "untruc" del espacio de nombres another No hay conflicto de nombres, incluso si la clase MaClasse existe en el espacio de nombres mes\trucs, ya que la definición de - MaClasse está en un archivo separado. Sin embargo, el siguiente + MaClasse está en un archivo separado. Sin embargo, el siguiente ejemplo produce un error fatal debido a un conflicto de nombres, ya que - MaClasse se define en el mismo archivo que la instrucción - use. + MaClasse se define en el mismo archivo que la instrucción + use. 7.0.0 - Incompatibilidad: Iterar sobre un &object; no- - Traversable tendrá ahora el mismo comportamiento + Incompatibilidad: Iterar sobre un no-Traversable + &object; tendrá ahora el mismo comportamiento que iterar sobre los &array;s por referencia. diff --git a/language/oop5/cloning.xml b/language/oop5/cloning.xml index 52e26d0a8..93e3d1d7e 100644 --- a/language/oop5/cloning.xml +++ b/language/oop5/cloning.xml @@ -21,11 +21,9 @@ - + ]]> diff --git a/language/oop5/constants.xml b/language/oop5/constants.xml index 0bdcc2d8e..4702d83d3 100644 --- a/language/oop5/constants.xml +++ b/language/oop5/constants.xml @@ -123,13 +123,13 @@ bar Fatal error: Uncaught Error: Cannot access private const Foo::BAZ in … ]]> - - - A partir de PHP 7.1.0, los modificadores de visibilidad son permitidos - en las constantes de clase. - - + + + A partir de PHP 7.1.0, los modificadores de visibilidad son permitidos + en las constantes de clase. + + Verificación de varianza de visibilidad de las constantes de clase, a partir de PHP 8.3.0 diff --git a/language/oop5/decon.xml b/language/oop5/decon.xml index caa580918..6d1715d8a 100644 --- a/language/oop5/decon.xml +++ b/language/oop5/decon.xml @@ -22,7 +22,7 @@ Los constructores padres no son llamados implícitamente si la clase hija define un constructor. Si se desea utilizar un constructor padre, será necesario hacer - llamada a parent::__construct() desde el constructor hijo. + llamada a parent::__construct desde el constructor hijo. Si el hijo no define un constructor entonces, puede ser heredado de la clase padre, exactamente de la misma forma que una método lo sería (si no ha sido declarado como privado). @@ -326,7 +326,7 @@ var_dump($p1, $p2, $p3); PHP posee un concepto de destructor similar al de otros lenguajes - orientados a objeto, como el C++. El método destructor es llamado + orientados a objeto, como el C++. El método destructor es llamado tan pronto como ya no hay referencias a un objeto dado, o en cualquier orden durante la secuencia de parada. @@ -355,7 +355,7 @@ $obj = new MyDestructableClass(); Al igual que el constructor, el destructor padre no será llamado implícitamente por el motor. Para ejecutar el destructor padre, se debe llamar explícitamente a la función - parent::__destruct en el cuerpo del destructor. + parent::__destruct en el cuerpo del destructor. Al igual que los constructores, una clase hija puede heredar el destructor del padre si no lo implementa ella misma. diff --git a/language/oop5/final.xml b/language/oop5/final.xml index 70fd6d0eb..9342c2062 100644 --- a/language/oop5/final.xml +++ b/language/oop5/final.xml @@ -4,7 +4,7 @@ Palabra clave "final" - La palabra clave final impide que las clases hijas redefinan + La palabra clave final impide que las clases hijas redefinan un método, una propiedad o constante prefijando la definición con final. Si la clase misma es definida como final, no podrá ser extendida. diff --git a/language/oop5/late-static-bindings.xml b/language/oop5/late-static-bindings.xml index 4a8bdbc5d..48ad04109 100644 --- a/language/oop5/late-static-bindings.xml +++ b/language/oop5/late-static-bindings.xml @@ -6,7 +6,7 @@ Late Static Bindings (Resolución estática en tiempo de ejecución) PHP implementa una funcionalidad llamada - late static binding, en español la resolución + late static binding, en español la resolución estática en tiempo de ejecución, que puede ser utilizada para referenciar la clase llamada en un contexto de herencia estática. @@ -29,8 +29,8 @@ - Esta funcionalidad ha sido bautizada como "late static bindings", - con un punto de vista interno. "Late binding", literalmente + Esta funcionalidad ha sido bautizada como "late static bindings", + con un punto de vista interno. "Late binding", literalmente resolución tardía, proviene del hecho de que los elementos static:: no serán resueltos utilizando la clase donde el método ha sido definido, sino que será calculada utilizando la información en tiempo de ejecución. diff --git a/language/oop5/magic.xml b/language/oop5/magic.xml index b4ea112a1..4d9c32692 100644 --- a/language/oop5/magic.xml +++ b/language/oop5/magic.xml @@ -83,7 +83,7 @@ serialize verifica si la clase tiene un método con el nombre mágico __serialize(). Si es así, este método será ejecutado antes de cualquier serialización. - Debe construir y devolver un &array; asociativo de pares clave/valor + Debe construir y devolver un array asociativo de pares clave/valor que represente la forma serializada del objeto. Si no se devuelve ningún array, se lanzará una TypeError. @@ -290,13 +290,6 @@ class Connection Por ejemplo, lo que echo $obj; mostrará. - - Un objeto Stringable - no será aceptado por una declaración de tipo string si la - declaración de tipo estricta está activada. - Si se desea tal comportamiento, la declaración de tipo debe aceptar - tanto Stringable como string a través de un tipo de unión. - A partir de PHP 8.0.0, el valor de retorno sigue las semánticas estándar de PHP, lo que significa que el valor será convertido en una string @@ -304,6 +297,13 @@ class Connection typing stricte está desactivado. + + Un objeto Stringable + no será aceptado por una declaración de tipo string si la + declaración de tipo estricta está activada. + Si se desea tal comportamiento, la declaración de tipo debe aceptar + tanto Stringable como string a través de un tipo de unión. + A partir de PHP 8.0.0, cualquier clase que contenga un método __toString() implementa también diff --git a/language/oop5/overloading.xml b/language/oop5/overloading.xml index 3e39b75f4..d1ad0997d 100644 --- a/language/oop5/overloading.xml +++ b/language/oop5/overloading.xml @@ -5,7 +5,7 @@ Sobrecarga mágica - La sobrecarga mágica en PHP permite "crear" dinámicamente propiedades y métodos. Estas entidades dinámicas son + La sobrecarga mágica en PHP permite crear dinámicamente propiedades y métodos. Estas entidades dinámicas son tratadas a través de métodos mágicos establecidos que se pueden posicionar en una clase para diversos tipos de acciones. @@ -87,7 +87,7 @@ El argumento $name es el nombre de la propiedad con la que se interactúa. - El argumento $value del método __set() + El argumento del método __set() $value especifica el valor al que la propiedad $name debería ser definida. @@ -96,7 +96,7 @@ Estos métodos mágicos no serán lanzados en contexto estático. Por consiguiente, estos métodos no deberían ser declarados como estáticos. - Se lanza un aviso si alguno de los métodos mágicos es declarado como estático. + Se lanza un aviso si alguno de los métodos mágicos es declarado como static. diff --git a/language/oop5/paamayim-nekudotayim.xml b/language/oop5/paamayim-nekudotayim.xml index 543efd4e4..51159a16c 100644 --- a/language/oop5/paamayim-nekudotayim.xml +++ b/language/oop5/paamayim-nekudotayim.xml @@ -31,7 +31,7 @@ Paamayim Nekudotayim podría parecer al principio una elección extraña para nombrar un doble dos puntos. - Sin embargo, en el momento de la escritura del Zend Engine 0.5 + Sin embargo, en el momento de la escritura del Zend Engine 0.5 (que hacía funcionar PHP 3), fue el nombre elegido por el equipo Zend. De hecho, esto significa un doble dos puntos... ¡en hebreo! diff --git a/language/oop5/properties.xml b/language/oop5/properties.xml index 4e2f2d190..50b600846 100644 --- a/language/oop5/properties.xml +++ b/language/oop5/properties.xml @@ -93,7 +93,7 @@ EOD; A partir de PHP 7.4.0, las definiciones de propiedades pueden incluir una , - con la excepción del tipo callable. + con la excepción del tipo callable. Ejemplo de propiedades tipadas diff --git a/language/oop5/serialization.xml b/language/oop5/serialization.xml index bb35c64f8..32d3a5d44 100644 --- a/language/oop5/serialization.xml +++ b/language/oop5/serialization.xml @@ -11,7 +11,7 @@ serialize devuelve un string que contiene una representación lineal de cualquier valor que puede ser almacenado en PHP. unserialize puede utilizar este - string para recrear el valor original de la variable a partir de su representación lineal. Utilizar serialize + string para recrear el valor original de la variable a partir de su representación lineal. Utilizar serialize para guardar un objeto conservará todas sus variables. Sus métodos no serán conservados, solo el nombre de la clase lo será. diff --git a/language/oop5/variance.xml b/language/oop5/variance.xml index 9e51e5c1a..c66119ec2 100644 --- a/language/oop5/variance.xml +++ b/language/oop5/variance.xml @@ -48,8 +48,8 @@ Covarianza - Para ilustrar el funcionamiento de la covarianza, se crea una simple clase padre abstracta, Animal - que será extendida por clases hijas, + Para ilustrar el funcionamiento de la covarianza, se crea una simple clase padre abstracta, Animal. + Animal será extendida por clases hijas, Cat y Dog. diff --git a/language/oop5/visibility.xml b/language/oop5/visibility.xml index e677fec17..7f62e3527 100644 --- a/language/oop5/visibility.xml +++ b/language/oop5/visibility.xml @@ -248,8 +248,7 @@ class SpecialBook extends Book o protegidos. Los métodos declarados sin utilizar explícitamente una palabra clave de visibilidad serán automáticamente definidos como públicos. - - + Declaración de métodos test(); // Bar::testPrivate ]]> - diff --git a/language/operators/arithmetic.xml b/language/operators/arithmetic.xml index 39ec70d02..f365c879a 100644 --- a/language/operators/arithmetic.xml +++ b/language/operators/arithmetic.xml @@ -77,7 +77,6 @@ que se convierten en int) y que el numerador sea un múltiplo del divisor, en cuyo caso se devolverá un valor entero. Para la división entera, ver intdiv. - intdiv. Los operandos del módulo se convierten en int antes de la ejecución. diff --git a/language/operators/array.xml b/language/operators/array.xml index c9499d803..e5695e63e 100644 --- a/language/operators/array.xml +++ b/language/operators/array.xml @@ -3,9 +3,9 @@ Operadores de arrays + Arrays Operadores de arrays - Arrays diff --git a/language/operators/bitwise.xml b/language/operators/bitwise.xml index 0312573ab..5566a6790 100644 --- a/language/operators/bitwise.xml +++ b/language/operators/bitwise.xml @@ -129,8 +129,6 @@ 00000000000000000111011111110111 - - diff --git a/language/operators/comparison.xml b/language/operators/comparison.xml index 593692f91..b4f1b69a7 100644 --- a/language/operators/comparison.xml +++ b/language/operators/comparison.xml @@ -262,7 +262,7 @@ echo $a <=> $b, ' '; // 1 object Cualquier cosa - El objeto es siempre mayor + El object es siempre mayor array @@ -326,7 +326,7 @@ function standard_array_compare($op1, $op2) Comparación de números de punto flotante - Debido a la forma en que los números de punto flotante son representados + Debido a la forma en que los floats son representados internamente, no se debe probar la igualdad entre dos números de tipo float. diff --git a/language/operators/errorcontrol.xml b/language/operators/errorcontrol.xml index d84ee62ca..e69cd8ce0 100644 --- a/language/operators/errorcontrol.xml +++ b/language/operators/errorcontrol.xml @@ -55,7 +55,7 @@ $mon_fichier = @file ('non_persistent_file') or El operador @ solo funciona con las expresiones. La regla general es: si es posible tomar el valor de algo, entonces se puede preponer el operador @ a este. Por ejemplo, puede ser prepuesto a variables, llamadas de funciones, ciertas llamadas a construcciones de lenguaje (por ejemplo, include), etc. - No puede ser prepuesto a definiciones de funciones o clases o estructuras condicionales como if y foreach, etc. + No puede ser prepuesto a definiciones de funciones o clases o estructuras condicionales como if y &foreach;, etc. diff --git a/language/operators/increment.xml b/language/operators/increment.xml index d04f8ea95..fe3cd46a8 100644 --- a/language/operators/increment.xml +++ b/language/operators/increment.xml @@ -110,7 +110,8 @@ int(4) ya que esto convertirá implícitamente el valor en int en el futuro. - El operador de decremento no tiene ningún efecto sobre los strings no numéricos. + El operador de decremento no tiene ningún efecto sobre los strings no- + numéricos. Un E_WARNING es emitido a partir de PHP 8.3.0, ya que una TypeError será levantada en el futuro. diff --git a/language/predefined/iterator/rewind.xml b/language/predefined/iterator/rewind.xml index 20173e937..ebc274c30 100644 --- a/language/predefined/iterator/rewind.xml +++ b/language/predefined/iterator/rewind.xml @@ -22,6 +22,15 @@ &foreach; bucle. No va a ser ejecutado despues &foreach; bucle. + + Como &foreach; siempre llama a rewind antes de iniciar + la iteración, avanzar manualmente la posición del iterador (por ejemplo mediante + SplFileObject::seek) será reiniciado. + + + Para iterar sin rebobinar el iterador, envuélvalo en un + NoRewindIterator. + diff --git a/language/predefined/php-incomplete-class.xml b/language/predefined/php-incomplete-class.xml index 79cd8da01..3f4841fe4 100644 --- a/language/predefined/php-incomplete-class.xml +++ b/language/predefined/php-incomplete-class.xml @@ -14,7 +14,7 @@ Creada por unserialize al intentar deserializar una clase no definida o una clase que no está incluida en el allowed_classes - del array options de unserialize. + de unserialize en el array options. diff --git a/language/predefined/stringable.xml b/language/predefined/stringable.xml index 392db55e9..65246cade 100644 --- a/language/predefined/stringable.xml +++ b/language/predefined/stringable.xml @@ -44,7 +44,7 @@
- &reftitle.examples; + Ejemplos de Stringable Ejemplo simple diff --git a/language/predefined/stringable/tostring.xml b/language/predefined/stringable/tostring.xml index 817d9b34b..21e7f770a 100644 --- a/language/predefined/stringable/tostring.xml +++ b/language/predefined/stringable/tostring.xml @@ -25,7 +25,7 @@ &reftitle.returnvalues; - Devuelve la representación de un objeto en forma de string. + Devuelve la representación &string; del objeto. diff --git a/language/predefined/variables/globals.xml b/language/predefined/variables/globals.xml index 43eeca2b7..285a12f5d 100644 --- a/language/predefined/variables/globals.xml +++ b/language/predefined/variables/globals.xml @@ -11,7 +11,7 @@ &reftitle.description; - Un array asociativo que contiene referencias a todas las variables + Un array asociativo que contiene referencias a todas las variables globales actualmente definidas en el contexto de ejecución global del script. Los nombres de las variables son los índices del array. diff --git a/language/predefined/variables/httpresponseheader.xml b/language/predefined/variables/httpresponseheader.xml index f2397b0f2..78f98c911 100644 --- a/language/predefined/variables/httpresponseheader.xml +++ b/language/predefined/variables/httpresponseheader.xml @@ -19,7 +19,7 @@ &reftitle.description; - El array $http_response_header es similar a la función + El $http_response_header array es similar a la función get_headers. Al utilizar el gestor HTTP, $http_response_header será rellenado con las cabeceras diff --git a/language/predefined/variables/request.xml b/language/predefined/variables/request.xml index da6a14a8a..6d033adf2 100644 --- a/language/predefined/variables/request.xml +++ b/language/predefined/variables/request.xml @@ -28,8 +28,8 @@ , no se incluirán las entradas argv y argc; ya que están - presentes en el array - $_SERVER + presentes en el $_SERVER + array. diff --git a/language/types/array.xml b/language/types/array.xml index ad1e41617..3b403673d 100644 --- a/language/types/array.xml +++ b/language/types/array.xml @@ -1471,7 +1471,7 @@ print_r($files); Debido a que el valor de un array puede ser cualquier cosa, también puede ser - otro array. Esto permite la creación de arrays recursivos y + otro array. Esto permite la creación de arrays recursivos y multidimensionales. diff --git a/language/types/boolean.xml b/language/types/boolean.xml index 02afe4964..60dc8fc54 100644 --- a/language/types/boolean.xml +++ b/language/types/boolean.xml @@ -11,7 +11,7 @@ Sintaxis - Para especificar un &boolean; literal, utilice la constante &true; o &false;. Ambas son insensibles a mayúsculas y minúsculas. + Para especificar un bool literal, utilice la constante &true; o &false;. Ambas son insensibles a mayúsculas y minúsculas. @@ -25,7 +25,7 @@ $foo = true; // asigna el valor TRUE a $foo - Típicamente, el resultado de un operador que devuelve un &boolean;, pasado luego a una estructura de control. + Típicamente, el resultado de un operador que devuelve un bool, pasado luego a una estructura de control. @@ -64,7 +64,7 @@ if ($show_separators) { - Al convertir en &boolean;, los siguientes valores son considerados como &false;: + Al convertir en bool, los siguientes valores son considerados como &false;: diff --git a/language/types/declarations.xml b/language/types/declarations.xml index 2947c6a1d..3b8ceaf25 100644 --- a/language/types/declarations.xml +++ b/language/types/declarations.xml @@ -281,7 +281,7 @@ Stack trace: No es posible combinar los dos tipos de singleton - false y true juntos en una + false y true juntos en una unión de tipo. Utilice en su lugar bool. @@ -292,8 +292,8 @@ Stack trace: Anterior a PHP 8.2.0, como false y null no podían ser utilizados como tipos autónomos, una unión de tipo compuesta únicamente de estos tipos no estaba permitida. Esto incluye los - tipos siguientes: false, false|null - y ?false. + tipos siguientes: false, false|null + y ?false. diff --git a/language/types/float.xml b/language/types/float.xml index 2623e3a49..8f1358bea 100644 --- a/language/types/float.xml +++ b/language/types/float.xml @@ -7,8 +7,8 @@ Números de punto flotante - Los números de punto flotante (también conocidos como "floats", - "doubles", o "números reales") + Los números de punto flotante (también conocidos como "floats", + "doubles" o "números reales") pueden ser especificados utilizando las siguientes sintaxis: @@ -122,14 +122,14 @@ EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM}) Para probar la igualdad de valores de números de punto flotante, se utiliza un límite superior del error relativo al redondeo. Este valor es conocido - como el epsilon de la máquina, o el unit roundoff, + como el epsilon de la máquina, o unit roundoff, y es la diferencia más pequeña aceptable en los cálculos. - + $a y $b son iguales en 5 números después de la coma. - + Comparación de números de punto flotante diff --git a/language/types/integer.xml b/language/types/integer.xml index dab97ad5b..ebbdcc0ba 100644 --- a/language/types/integer.xml +++ b/language/types/integer.xml @@ -60,7 +60,7 @@ $a = 1_234_567; // un número decimal (a partir de PHP 7.4.0) - Formalmente, la estructura de un entero literal es a partir de PHP 8.1.0 + Formalmente, la estructura de un int literal es a partir de PHP 8.1.0 (anteriormente, los prefijos octales 0o o 0O no estaban permitidos, y antes de PHP 7.4.0, los underscores no estaban permitidos. diff --git a/language/types/iterable.xml b/language/types/iterable.xml index 3e73d1b66..1a05c70e0 100644 --- a/language/types/iterable.xml +++ b/language/types/iterable.xml @@ -11,7 +11,7 @@ Desde su introducción en PHP 7.1.0 y antes de PHP 8.2.0, iterable era un pseudo-tipo integrado que actuaba como el alias de tipo mencionado anteriormente y puede ser utilizado como una declaración de tipo. - iterable puede ser utilizado en un ciclo &foreach; y con + Un tipo iterable puede ser utilizado en un ciclo &foreach; y con yield from en un generador. diff --git a/language/types/object.xml b/language/types/object.xml index 0bf7e05b0..98961a7c0 100644 --- a/language/types/object.xml +++ b/language/types/object.xml @@ -9,7 +9,7 @@ Inicialización de los objetos - Para crear un nuevo objeto, utilice la palabra clave new + Para crear un nuevo object, utilice la palabra clave new para instanciar una clase: @@ -43,8 +43,8 @@ $bar->do_foo(); Conversión en un objeto - Si un objeto es convertido en un objeto, no será modificado. - Si un valor de cualquier tipo es convertido en un objeto, + Si un object es convertido en un object, no será modificado. + Si un valor de cualquier otro tipo es convertido en un object, se creará una nueva instancia de la clase interna stdClass. Si el valor es &null;, la nueva instancia estará vacía. Un array se convierte en object con las propiedades diff --git a/language/types/resource.xml b/language/types/resource.xml index c2dc16525..8c8a2dadf 100644 --- a/language/types/resource.xml +++ b/language/types/resource.xml @@ -34,8 +34,8 @@ Gracias al sistema de conteo de referencias introducido con el Motor - Zend, un recurso que ya no es referenciado es detectado - automáticamente, y es liberado por el recolector de basura. Por esta + Zend, un valor de tipo resource sin más referencias es detectado + automáticamente, y es liberado por el recolector de basura. Por esta razón, rara vez se necesita liberar la memoria manualmente. @@ -43,8 +43,7 @@ Los enlaces persistentes con bases de datos son una excepción a esta regla. Ellos no son destruidos por el recolector de - basura. Vea también la sección sobre conexiones persistentes + basura. Vea también la sección sobre conexiones persistentes para más información. diff --git a/language/types/string.xml b/language/types/string.xml index 85c309863..b317b00e2 100644 --- a/language/types/string.xml +++ b/language/types/string.xml @@ -70,7 +70,7 @@ A diferencia de las comillas dobles y sintaxis heredoc, las variables y las secuencias de escape - para caracteres especiales no serán extendidas + para caracteres especiales no serán extendidas cuando se encuentren en strings entre comillas simples. @@ -689,7 +689,8 @@ EOT; Si un signo de dólar ($) es encontrado, los caracteres que lo siguen y que pueden ser utilizados en un nombre de variable serán interpretados como tales y sustituidos. - + + Interpolación de strings - + Formalmente, la estructura para la sintaxis de sustitución de variable básica es la siguiente: - - Interpolación de strings + - + diff --git a/language/types/type-juggling.xml b/language/types/type-juggling.xml index ad1ccbecb..935254b81 100644 --- a/language/types/type-juggling.xml +++ b/language/types/type-juggling.xml @@ -243,8 +243,8 @@ Los tipos que no forman parte de la lista de preferencias anterior no son objetivos admisibles para la coerción implícita. En particular, - ninguna restricción implícita a los tipos null y - false se produce. + ninguna restricción implícita a los tipos null, false y + true se produce. diff --git a/language/types/type-system.xml b/language/types/type-system.xml index 98a9cdbce..845a9a95e 100644 --- a/language/types/type-system.xml +++ b/language/types/type-system.xml @@ -69,28 +69,28 @@ self, parent, y static - - - - - Tipos singleton - - - - false - - true + + Tipos singleton + + + + false + + + true + + - - - - - Tipos unitarios - - - null + + Tipos unitarios + + + + null + + diff --git a/language/variables.xml b/language/variables.xml index d80e7e532..e11a60ab9 100644 --- a/language/variables.xml +++ b/language/variables.xml @@ -420,10 +420,10 @@ function test_superglobal() - + Utilizar una clave global fuera de una función no es un error. Esta puede ser utilizada aún si el fichero está incluido desde el interior de una función. - + @@ -808,7 +808,7 @@ echo "$a $hola"; resolver un problema de ambigüedad. Si se escribe $$a[1], el intérprete necesita saber si nos referimos a utilizar $a[1] como una variable, o si - se pretendía utilizar $$a como variable y el índice [1] + se pretendía utilizar $$a como variable y el índice [1] como índice de dicha variable. La sintaxis para resolver esta ambigüedad es: ${$a[1]} para el primer caso y ${$a}[1] para el segundo. diff --git a/language/wrappers/audio.xml b/language/wrappers/audio.xml index 1346fbbde..b863ff3a3 100644 --- a/language/wrappers/audio.xml +++ b/language/wrappers/audio.xml @@ -32,7 +32,7 @@ Para usar la envoltura ogg:// es necesario instalar la extensión OGG/Vorbis - disponible en PECL. + disponible en &link.pecl;. diff --git a/language/wrappers/expect.xml b/language/wrappers/expect.xml index 30fa286a2..0e10805cb 100644 --- a/language/wrappers/expect.xml +++ b/language/wrappers/expect.xml @@ -21,7 +21,7 @@ Para poder usar la envoltura expect:// se debe instalar la extensión Expect - disponible en PECL. + disponible en &link.pecl;. expect:// (PECL) diff --git a/language/wrappers/file.xml b/language/wrappers/file.xml index 778d6e793..0d164a4c7 100644 --- a/language/wrappers/file.xml +++ b/language/wrappers/file.xml @@ -23,7 +23,7 @@ Con ciertas funciones como fopen y - file_get_contents, include_path + file_get_contents, include_path puede eventualmente ser analizada para encontrar los ficheros, si se proporciona una ruta relativa. diff --git a/language/wrappers/rar.xml b/language/wrappers/rar.xml index eff630981..6058eb49c 100644 --- a/language/wrappers/rar.xml +++ b/language/wrappers/rar.xml @@ -32,7 +32,7 @@ Esta visualización es diferente de los directorios regulares en el sentido de que el flujo resultante no contendrá información como la fecha y hora de modificación, ya que la raíz del directorio no se almacena como una entrada individual en el archivo. El uso de esta envoltura con - RecursiveDirectoryIterator requiere la presencia del signo de número en la URL al acceder + RecursiveDirectoryIterator requiere la presencia del signo de número en la URL al acceder a la raíz, para construir correctamente las URLs de los hijos. diff --git a/security/cgi-bin.xml b/security/cgi-bin.xml index 8b4888def..6aef0502c 100644 --- a/security/cgi-bin.xml +++ b/security/cgi-bin.xml @@ -144,7 +144,7 @@ AddHandler php-script .php También si el método para asegurar las peticiones no es redirigido, como se describió en la sección anterior, no está - disponible, es necesario configurar un script doc_root que sea + disponible, es necesario configurar un script doc_root que sea diferente de la raíz del documento web. @@ -161,13 +161,14 @@ AddHandler php-script .php Otra opción utilizable es esta user_dir. Cuando user_dir no está configurado, - lo único que controla el fichero abierto es doc_root. + linkend="ini.user-dir">user_dir. Cuando user_dir no está configurado, + lo único que controla el fichero abierto es + doc_root. Al abrir una URL como http://mi.servidor/~usuario/documento.php no resulta en la apertura de un fichero bajo el directorio personal de los usuarios, pero si un fichero llamado ~usuario/documento.php debajo de - doc_root (si, un nombre de directorio que inicia con una a tilde [~]). + doc_root (si, un nombre de directorio que inicia con una a tilde [~]). Si user_dir es configurado, por ejemplo