1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-26 08:38:05 +02:00
Files
archived-doc-es/appendices/migration54.xml
T
Pedro Antonio Gil Rodríguez 8a8de890e6 Actualización a la última versión
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@338484 c90b9560-bf6c-de11-be94-00142212c4b1
2016-01-13 23:16:30 +00:00

1502 lines
43 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: bbdc7d9e36c87870c3f7dbb366575540ad57a884 Maintainer: seros Status: ready -->
<!-- Reviewed: no Maintainer: andresdzphp -->
<!-- Based on UPGRADING version 322438. Work in progess !-->
<appendix xml:id="migration54" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Migrando de PHP 5.3.x hacia PHP 5.4.x</title>
<simpara>
&manual.migration.seealso;
<link linkend="migration5">5.0.x</link>,
<link linkend="migration51">5.1.x</link>,
<link linkend="migration52">5.2.x</link>,
<link linkend="migration53">5.3.x</link> y
<link linkend="migration55">5.5.x</link>.
</simpara>
<section xml:id="migration54.changes">
<title>¿Qué ha cambiado en PHP 5.4.x?</title>
<simpara>
La mayoría de las mejoras en PHP 5.4.x no tienen ningún impacto sobre el código existente.
Existen unas <link linkend="migration54.incompatible">pocas incompatibilidades</link>
y <link linkend="migration54.new-features">nuevas características</link> que deberían
ser consideradas, y debería de comprobarse el código antes de cambiar las versiones
de PHP en entornos de producción.
</simpara>
<simpara>
Para los sistemas que sean actualizados desde una versión anterior de PHP, la documentación
relevante está disponible en:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="migration53">Notas de Actualización de PHP 5.3.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration52">Notas de Actualización de PHP 5.2.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration51">Notas de Actualización de PHP 5.1.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration5">Migración desde PHP 4 hacia PHP 5</link>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.incompatible">
<title>Cambios con versiones incompatibles</title>
<simpara>
Aunque la mayoría del código existente en PHP 5 debería funcionar sin muchos cambios, por favor
tome nota de algunas incompatibilidades con versiones anteriores:
</simpara>
<itemizedlist>
<listitem>
<simpara>
El <link linkend="features.safe-mode">modo seguro</link> ya no
es soportado. Cualquier aplicación que dependa del modo seguro puede necesitar
ajustes, en términos de seguridad.
</simpara>
</listitem>
<listitem>
<simpara>
Las <link linkend="security.magicquotes">comillas mágicas</link> han sido eliminadas. Las aplicaciones que dependan
de esta característica pueden necesitar ser actualizadas, para evitar cuestiones de seguridad.
</simpara>
<simpara>
<function>get_magic_quotes_gpc</function> y <function>get_magic_quotes_runtime</function>
ahora siempre devuelven &false;. <function>set_magic_quotes_runtime</function> emite un
error de nivel <constant>E_CORE_ERROR</constant> al intentar habilitar las <link linkend="security.magicquotes">Comillas mágicas</link>.
</simpara>
</listitem>
<listitem>
<simpara>
Las directivas de &php.ini; <link linkend="ini.register-globals">register_globals</link> y
<link linkend="ini.register-long-arrays">register_long_arrays</link>
han sido eliminadas.
</simpara>
</listitem>
<listitem>
<simpara>
Las directivas mbstring.script_encoding han sido eliminadas. Use <link linkend="ini.zend.script-encoding">zend.script_encoding</link> en su lugar.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.references.pass">El paso por referencia en tiempo de llamada</link> ha sido eliminado.
</simpara>
</listitem>
<listitem>
<simpara>
Las sentencias <link linkend="control-structures.break">break</link>
y <link linkend="control-structures.continue">continue</link>
ya no aceptan argumentos variables (p.ej., <literal>break 1 + foo() * $bar;</literal>).
Los argumentos estáticos aún funcionan, como <literal>break 2;</literal>. Como efecto secundario de este cambio
<literal>break 0;</literal> y <literal>continue 0;</literal> ya no están permitidos.
</simpara>
</listitem>
<listitem>
<simpara>
En la <link linkend="book.datetime">extensión de fecha y hora</link>, la zona horaria ya no puede ser
establecida usando la variable de entorno TZ. En su lugar se tiene que especificar una zona horaria usando la
opción de &php.ini; <link linkend="ini.date.timezone">date.timezone</link> o la función
<function>date_default_timezone_set</function>. PHP ya no intentará adivinar la zona horaria, y en su lugar recurrirá a "UTC"
y emitirá un error de nivel <constant>E_WARNING</constant>.
</simpara>
</listitem>
<listitem>
<simpara>
Los índices de cadenas no numericos - p.ej. <literal>$a['foo']</literal> donde $a es una cadena - ahora devuelven
false sobre <function>isset</function> y true sobre <function>empty</function>, y producen un error de nivel <constant>E_WARNING</constant>
si se intenta usarlos. Los índices de los tipo double, bool y null producen un error de nivel <constant>E_NOTICE</constant>. Las cadenas numéricas
(p.ej. <literal>$a['2']</literal>) aún funcionan como antes. Observe que los índices como <literal>'12.3'</literal>
y <literal>'5 foobar'</literal> son considerados no numéricos y producen un error de nivel <constant>E_WARNING</constant>,
aunque son convertidos a 12 y 5 respectivamente, por razones de retrocompatibilidad.
</simpara>
<simpara>
Nota: El siguiente código devuelve resultados diferentes.
</simpara>
<simpara>
$str='abc';var_dump(isset($str['x'])); // false para PHP 5.4 o posterior, pero true para 5.3 o anterior
</simpara>
</listitem>
<listitem>
<simpara>
Ahora, convertir un array a cadena genera un error de nivel <constant>E_NOTICE</constant>,
aunque el resultado de la conversión aún será la cadena <literal>"Array"</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Convertir &null;, &false;, o una cadena vacía en un objeto añadiendo una propiedad
ahora emitirá un error de nivel <constant>E_WARNING</constant>, en lugar de nivel <constant>E_STRICT</constant>.
</simpara>
</listitem>
<listitem>
<simpara>
Los nombres de parámetros que cubren super globales ahora causan un error fatal. Esto prohíbe código como
<literal>function foo($_GET, $_POST) {}</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Los <link linkend="book.hash">algoritmos hash</link> Salsa10 y Salsa20 han sido eliminados.
</simpara>
</listitem>
<listitem>
<simpara>
<function>array_combine</function> ahora devuelve <literal>array()</literal> en lugar de &false;
cuando se proporcionan dos arrays vacíos como parámetros.
</simpara>
</listitem>
<listitem>
<simpara>
Si se utiliza <function>htmlentities</function> con conjuntos de caracteres asiáticos,
funcion como <function>htmlspecialchars</function> - este siempre ha sido el
caso en versiones de PHP anteriores, pero ahora se emite un error de nivel
<constant>E_STRICT</constant>.
</simpara>
</listitem>
<listitem>
<simpara>
El tercer parámetro de <function>ob_start</function> se cambió de
<type>boolean</type> <parameter>erase</parameter> a <type>integer</type>
<parameter>flags</parameter>. Observe que el código que establezca explícitamente
<parameter>erase</parameter> a &false; ya no se comportará como se esperaba
en PHP 5.4: siga
<link linkend="function.ob-start.flags-bc">este ejemplo</link> para escribir
código que sea compatible con PHP 5.3 y 5.4.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Las siguientes palabras clave ahora son <link linkend="reserved">reservadas</link>, por lo que no se pueden usar
como nombres de funciones, clases, etc.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="language.oop5.traits">trait</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.callable">callable</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.oop5.traits">insteadof</link>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Las siguientes funciones han sido eliminadas de PHP:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>define_syslog_variables</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>import_request_variables</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_is_registered</function>, <function>session_register</function>
y <function>session_unregister</function>.
</simpara>
</listitem>
<listitem>
<simpara>
Los alias
<function>mysqli_bind_param</function>, <function>mysqli_bind_result</function>,
<function>mysqli_client_encoding</function>, <function>mysqli_fetch</function>,
<function>mysqli_param_count</function>, <function>mysqli_get_metadata</function>,
<function>mysqli_send_long_data</function>, mysqli::client_encoding() y mysqli_stmt::stmt().
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.new-features">
<title>Nuevas características</title>
<simpara>
PHP 5.4.0 ofrece un gran rango de nuevas características:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Se ha añadido soporte para <link linkend="language.oop5.traits">traits</link>.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido la sintaxis corta de array, e.g. <literal>$a = [1, 2, 3, 4];</literal> o
<literal>$a = ['uno' => 1, 'dos' => 2, 'tres' => 3, 'cuatro' => 4];</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido la derreferenciación de función de array, p.ej. <literal>foo()[0]</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Los <link linkend="functions.anonymous">cierres</link> ahora soportan <literal>$this</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>&lt;?=</literal> ahora está siempre disponible, sin tener en cuenta la
opción de &php.ini; <link linkend="ini.short-open-tag">short_open_tag</link>.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido el acceso a miembro de clase en la instanciación,
p.ej. <literal>(new Foo)-&gt;bar()</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Ahora está soportada la sintaxis <literal>Clase::{expr}()</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido el formato de número binario, p.ej. <literal>0b001001101</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Se han mejorado los mensajes de error de análisis y las advertencias de argumentos incompatibes.
</simpara>
</listitem>
<listitem>
<simpara>
La extensión de sesiones ahora puede rastrear el <link linkend="session.upload-progress">progreso de subida</link> de ficheros.
</simpara>
</listitem>
<listitem>
<simpara>
Desarrollo interno de <link linkend="features.commandline.webserver">servidor web en modo CLI</link>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.sapi">
<title>Cambios en el módulo de SAPI</title>
<itemizedlist>
<listitem>
<simpara>
Ahora está disponible un nuevo módulo de SAPI llamado <literal>cli-server</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido la opción CLI <literal>--rz</literal> que muestra información de la llamada extensión Zend.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido el atajo <literal>#ajusteini=valor</literal> para cambiar configuraciones de &php.ini; en tiempo de ejecución para readline de CLI interactivo.
</simpara>
</listitem>
<listitem>
<simpara>
Se han añadido funciones compatibles con apache: <function>apache_child_terminate</function>,
<function>getallheaders</function>, <function>apache_request_headers</function>
y <function>apache_response_headers</function> para la SAPI FastCGI.
</simpara>
</listitem>
<listitem>
<simpara>
PHP-FPM: Se ha añadido el ajuste <literal>process.max</literal> para controlar el número
de procesos que FPM puede bifurcar.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.deprecated">
<title>Características obsoletas en PHP 5.4.x</title>
<simpara>
Funciones obsoletas:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>mysql_list_dbs</function>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.parameters">
<title>Funciones cambiadas</title>
<simpara>
Varias funciones con parámetros opcionales nuevos en PHP 5.4:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
Se ha añadido el parámetro opcional <parameter>limit</parameter> a <function>debug_backtrace</function>
y <function>debug_print_backtrace</function>, para limitar la cantidad de marcos de pila devueltos.
</simpara>
</listitem>
<listitem>
<simpara>
<function>is_link</function> ahora funciona apropiadamente con enlaces simbólicos en Windows Vista
o posterior. Los sistemas anteriores no soportan enlaces simbólicos.
</simpara>
</listitem>
<listitem>
<simpara>
<function>parse_url</function> ahora reconoce el host al omitir el esquema
y está presente un separador componentes está presente al inicio. A partir de PHP 5.4.7.
</simpara>
</listitem>
</itemizedlist>
<simpara>OpenSSL:</simpara>
<itemizedlist>
<listitem>
<simpara>
Se ha añadido una opción de no relleno a las funciones <function>openssl_encrypt</function> y
<function>openssl_decrypt</function>.
</simpara>
</listitem>
</itemizedlist>
<simpara>Intl:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>idn_to_ascii</function> y <function>idn_to_utf8</function> ahora toman dos parámetros
extra, uno indicando la variante (IDNA 2003 o UTS #46) y otro, pasado por referencia,
para devolver detalles sobre la operación en el caso de que se elija UTS #46.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.functions">
<title>Nuevas funciones</title>
<simpara>
PHP 5.4 introduce algunas funciones nuevas:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>hex2bin</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>http_response_code</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_declared_traits</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>getimagesizefromstring</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_set_chunk_size</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_import_stream</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>trait_exists</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>header_register_callback</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>class_uses</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.session">Session:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>session_status</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_register_shutdown</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.mysqli">Mysqli:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>mysqli_error_list</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_stmt_error_list</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.libxml">Libxml:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>libxml_set_external_entity_loader</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.ldap">LDAP:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>ldap_control_paged_result</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ldap_control_paged_result_response</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.intl">Intl:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>transliterator_create</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_create_from_rules</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_create_inverse</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_get_error_code</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_get_error_message</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_list_ids</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>transliterator_transliterate</function>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.zlib">Zlib:</link></simpara>
<itemizedlist>
<listitem>
<simpara>
<function>zlib_decode</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>zlib_encode</function>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.classes">
<title>Nuevas clases e interfaces</title>
<simpara>
Las siguientes clases se han introducido en PHP 5.4.0:
</simpara>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>CallbackFilterIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>RecursiveCallbackFilterIterator</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.reflection">Reflection</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>ReflectionZendExtension</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">Json</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>JsonSerializable</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.session">Session</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>SessionHandler</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SessionHandlerInterface</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.snmp">Snmp</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>SNMP</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.intl">Intl</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>Transliterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>Spoofchecker</classname>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.methods">
<title>Métodos nuevos</title>
<simpara>
Se han introducido nuevos métodos en 5.4.0:
</simpara>
<simpara><link linkend="book.xsl">XSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>XsltProcessor::setSecurityPrefs</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>XsltProcessor::getSecurityPrefs</methodname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>RegexIterator::getRegex</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplObjectStorage::getHash</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>DirectoryIterator::getExtension</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplDoublyLinkedList::serialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplDoublyLinkedList::unserialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplFileInfo::getExtension</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplFileObject::fputcsv</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplQueue::serialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplQueue::unserialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplStack::serialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplStack::unserialize</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>SplTempFileObject::fputcsv</methodname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.reflection">Reflection</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>ReflectionExtension::isPersistent</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionExtension::isTemporary</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionClass::isCloneable</methodname>
</simpara>
</listitem>
</itemizedlist>
<simpara><classname>Closure</classname>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>Closure::bind</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>Closure::bindTo</methodname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="ref.pdo-dblib">PDO_dblib</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>PDO::newRowset</methodname>
</simpara>
</listitem>
</itemizedlist>
<simpara><classname>StreamWrapper</classname>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>StreamWrapper::stream_metadata</methodname>
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>StreamWrapper::stream_truncate</methodname>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.removed-extensions">
<title>Extensiones eliminadas</title>
<simpara>
Estas extensiones han sido movidas a PECL y ya no son parte de la distribución
de PHP. Las versiones de los paquetes PECL de estas extensiones serán creadas
según la demanda de los usuarios.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.sqlite">sqlite</link>
- Observe que ext/sqlite3 y ext/pdo_sqlite no son afectadas
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.extensions-other">
<title>Otros cambios a extensiones</title>
<simpara>
Cambios en el comportamiento de la extensión, y nuevas características:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.mysqli">mysqli</link>
- <classname>mysqli_result</classname> ahora implementa <link linkend="class.traversable">Traversable</link>
</simpara>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.pdo-mysql">pdo_mysql</link>
- Eliminado el soporte para la vinculación de bibliotecas cliente de MySQL anteriores que 4.1
</simpara>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<simpara>
Las extensiones de MySQL <link linkend="book.mysql">mysql</link>,
<link linkend="book.mysqli">mysqli</link> y <link linkend="ref.pdo-mysql">PDO_mysql</link>
utilizan ahora <link linkend="book.mysqlnd">mysqlnd</link> como la biblioteca predeterminada. Aún es posible usar
libmysqlclient especificando una ruta en las opciones de configuración.
</simpara>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.mysqlnd">mysqlnd</link>
- Se ha añadido soporte para tuberías con nombre
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.global-constants">
<title>Nuevas constantes globales</title>
<simpara>Núcleo de PHP:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>ENT_DISALLOWED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ENT_HTML401</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ENT_HTML5</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ENT_SUBSTITUTE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ENT_XML1</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ENT_XHTML</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IPPROTO_IP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IPPROTO_IPV6</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IPV6_MULTICAST_HOPS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IPV6_MULTICAST_IF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IPV6_MULTICAST_LOOP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IP_MULTICAST_IF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IP_MULTICAST_LOOP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IP_MULTICAST_TTL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_JOIN_GROUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_LEAVE_GROUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_BLOCK_SOURCE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_UNBLOCK_SOURCE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_JOIN_SOURCE_GROUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MCAST_LEAVE_SOURCE_GROUP</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.curl">Curl</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>CURLOPT_MAX_RECV_SPEED_LARGE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_MAX_SEND_SPEED_LARGE</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.libxml">LibXML</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>LIBXML_HTML_NODEFDTD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LIBXML_HTML_NOIMPLIED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>LIBXML_PEDANTIC</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.openssl">OpenSSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>OPENSSL_CIPHER_AES_128_CBC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_CIPHER_AES_192_CBC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_CIPHER_AES_256_CBC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_RAW_DATA</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_ZERO_PADDING</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.outcontrol">Buffer de salida</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_CLEAN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_CLEANABLE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_DISABLED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_FINAL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_FLUSH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_FLUSHABLE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_REMOVABLE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_STARTED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_STDFLAGS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_OUTPUT_HANDLER_WRITE</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.session">Sesiones</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PHP_SESSION_ACTIVE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_SESSION_DISABLED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_SESSION_NONE</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.stream">Flujos</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>STREAM_META_ACCESS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_META_GROUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_META_GROUP_NAME</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_META_OWNER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_META_OWNER_NAME</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_META_TOUCH</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.zlib">Zlib</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>ZLIB_ENCODING_DEFLATE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ZLIB_ENCODING_GZIP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ZLIB_ENCODING_RAW</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.intl">Intl</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_CHECK_BIDI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_CHECK_CONTEXTJ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_NONTRANSITIONAL_TO_ASCII</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_NONTRANSITIONAL_TO_UNICODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INTL_IDNA_VARIANT_2003</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INTL_IDNA_VARIANT_UTS46</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_EMPTY_LABEL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_LABEL_TOO_LONG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_DOMAIN_NAME_TOO_LONG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_LEADING_HYPHEN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_TRAILING_HYPHEN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_HYPHEN_3_4</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_LEADING_COMBINING_MARK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_DISALLOWED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_PUNYCODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_LABEL_HAS_DOT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_INVALID_ACE_LABEL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_BIDI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>IDNA_ERROR_CONTEXTJ</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">Json</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>JSON_PRETTY_PRINT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_UNESCAPED_SLASHES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_NUMERIC_CHECK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_UNESCAPED_UNICODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_BIGINT_AS_STRING</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.ini">
<title>Cambios en el manejo del fichero INI</title>
<simpara>
Se han eliminado las siguientes directivas de &php.ini;:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.register-globals">register_globals</link> y
<link linkend="ini.register-long-arrays">register_long_arrays</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>,
<link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>,
y <link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.allow-call-time-pass-reference">allow_call_time_pass_reference</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.define-syslog-variables">define_syslog_variables</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.syntax-highlighting">highlight.bg</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.session.bug-compat-42">session.bug_compat_42</link> y
<link linkend="ini.session.bug-compat-warn">session.bug_compat_warn</link>
</simpara>
</listitem>
<listitem>
<simpara>
mbstring.script_encoding
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.y2k-compliance">y2k_compliance</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.safe-mode">safe_mode</link>,
<link linkend="ini.safe-mode-gid">safe_mode_gid</link>,
<link linkend="ini.safe-mode-include-dir">safe_mode_include_dir</link>,
<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>,
<link linkend="ini.safe-mode-allowed-env-vars">safe_mode_allowed_env_vars</link>, y
<link linkend="ini.safe-mode-protected-env-vars">safe_mode_protected_env_vars</link>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Se han añadido las siguientes directivas de &php.ini;:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.cli.pager">cli.pager</link> y
<link linkend="ini.cli.prompt">cli.prompt</link> para la SAPI CLI usando readline
en modo interactivo.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.cli-server.color">cli_server.color</link>
para habilitar el servidro web de desarrollo interno para usar códigos de color ANSI
en la salida de terminales.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.max-input-vars">max_input_vars</link>
- especifica cuantas variables de entrada GET/POST/COOKIE se pueden aceptar.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend.multibyte">zend.multibyte</link>
- para controlar el nuevo soporte multibyte.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend.script-encoding">zend.script_encoding</link>
- Este valor será usado a menos que aparezca una directiva "declare(encoding=...)"
al inicio del scritp.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend.signal-check">zend.signal_check</link>
- para comprobar gestores de señales reemplazados en el cierre.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.session.upload-progress.enabled">session.upload_progress.enabled</link>,
<link linkend="ini.session.upload-progress.cleanup">session.upload_progress.cleanup</link>,
<link linkend="ini.session.upload-progress.prefix">session.upload_progress.prefix</link>,
<link linkend="ini.session.upload-progress.name">session.upload_progress.name</link>,
<link linkend="ini.session.upload-progress.freq">session.upload_progress.freq</link>,
<link linkend="ini.session.upload-progress.min-freq">session.upload_progress.min_freq</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.enable-post-data-reading">enable_post_data_reading</link>
- Cuando está deshabilitado, los datos de POST no se leen (y tampoco se procesan)
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.windows-show-crt-warning">windows_show_crt_warning</link>
- Esta directiva muestra las advertencias CRT de Windows cuando está habilitada. Estas
advertencias eran mostradas por omisión hasta ahora.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Has sido cambiadas las siguientes directivas de &php.ini;:
</simpara>
<itemizedlist>
<listitem>
<simpara>
El valor predeterminado de <link linkend="ini.session.entropy-file">session.entropy_file</link>
ahora es /dev/random o /dev/urandom dependiendo de lo que haya sido
estimado en tiempo de compilación.
</simpara>
</listitem>
<listitem>
<simpara>
El valor predeterminado de <link linkend="ini.session.entropy-length">session.entropy_length</link>
ahora es 32.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration54.other">
<title>Other changes</title>
<itemizedlist>
<listitem>
<simpara>
El conjunto de caracteres predeterminado para <function>htmlspecialchars</function>
y <function>htmlentities</function> ahora es <literal>UTF-8</literal>,
en lugar de <literal>ISO-8859-1</literal>. Observe que si se cambia el conjunto de caracteres
de salida mediante el ajuste de configuración <link linkend="ini.default-charset">default_charset</link>
no afecta a htmlspecialchars/htmlentities a menos que
se proporcione "" (una cadena vacía) como parámetro de codificación a las
llamadas a <function>htmlspecialchars</function>/<function>htmlentities</function>.
Generealmente no se recomienda hacer esto ya que se debería de poder cambiar el conjunto de
caracteres de salida sin afectar al conjunto de caracteres en tiempo de ejecución usado por
estas funciones.these functions. El enfoque más rápido es establecer explícitamente el conjunto de
caracteres en cada llamada a <function>htmlspecialchars</function> y
<function>htmlentities</function>.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>E_ALL</constant> ahora incluye los errores de nivel <constant>E_STRICT</constant>
en la directiva de configuración <link linkend="ini.error-reporting">error_reporting</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.snmp">SNMP</link> ahora tiene una API para POO.
</simpara>
<simpara>
Las funciones ahora devuelven &false; en cada condición de error incluyendo las relacionadas con SNMP
(no existe tal instancia, fin de MIB, etc). Así, en particular, se rompe con el comportamiento
de que las funciones get/walk devuelvan una cadena vacía en errores relacionados con SNMP.
</simpara>
<simpara>
Las consultas multi-OID get/getnext/set ahora son soportadas.
</simpara>
<simpara>
Compatibilidad con código Dropped UCD-SNMP, considere actualizar a net-snmp v5.3+, y se requiere
Net-SNMP v5.4+ para la versión de Windows.
</simpara>
<simpara>
Ahora el soporte para la resolución de nombres DNS de IPv6 DNS de
agentes SNMP remotos SNMP (pares) se realiza por extensión, y ya no por la biblioteca Net-SNMP.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.openssl">OpenSSL</link> ahora soporta AES.
</simpara>
</listitem>
<listitem>
<simpara>
La <link linkend="features.commandline">SAPI CLI</link> ya no finaliza
con errores fatales al usar el modo interactivo con soporte de readline.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido <link linkend="language.variables.superglobals">$_SERVER['REQUEST_TIME_FLOAT']</link>
para incluir una precisión de microsegundos.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido nuevos algoritmos hash: fnv132, fnv164, joaat
</simpara>
</listitem>
<listitem>
<simpara>
Los índices encadencados de strings - p.ej. $a[0][0] donde $a es un string - ahora funcionan.
</simpara>
</listitem>
<listitem>
<simpara>
La conversión de arrays desde <type>SimpleXMLElement</type> ahora siempre contiene todos los nodos en
lugar del sólo el primero nodo coincidente. Todos los hijos de <type>SimpleXMLElement</type> ahora siempre
se imprimen al usar <function>var_dump</function>, <function>var_export</function> y
<function>print_r</function>.
</simpara>
</listitem>
<listitem>
<simpara>
Ahora es posible forzar los argumentos de <link linkend="language.oop5.decon">__construct</link> de una clase en un
constructor abstracto en la clase base.
</simpara>
</listitem>
</itemizedlist>
</section>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->