1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-24 23:58:06 +02:00
Files
archived-doc-es/appendices/migration52.xml
T
Pedro Antonio Gil Rodríguez b92af78d49 Correcciones menores
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@337245 c90b9560-bf6c-de11-be94-00142212c4b1
2015-07-27 22:18:58 +00:00

2067 lines
57 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 8ad0d94e1c87b2daabff88e74acc31e8a11eec0a Maintainer: bng5 Status: ready -->
<!-- Reviewed: no -->
<appendix xml:id="migration52" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Migración de PHP 5.1.x a PHP 5.2.x</title>
<para>
&manual.migration.seealso;
<link linkend="migration5">5.0.x</link>,
<link linkend="migration51">5.1.x</link>,
<link linkend="migration53">5.3.x</link>,
<link linkend="migration54">5.4.x</link> y
<link linkend="migration55">5.5.x</link>.
</para>
<section xml:id="migration52.changes">
<title>Qué ha cambiado en PHP 5.2.x</title>
<para>
La mayoría de las mejoras en PHP 5.2.x no tienen impacto en códigos existentes.
Existen <link linkend="migration52.incompatible">algunas incompatibilidades</link>
y <link linkend="migration52.error-messages">nuevos mensajes de error</link>
que deberían ser considerados, y el código debería ser probado antes de hacer
el cambio de versión de PHP en ambientes de producción.
</para>
<para>
Si el sistema está siendo actualizado desde PHP 5.0.x, también debería leer
la sección del manual <link linkend="migration51">Migración de
PHP 5.0.x a PHP 5.1.x</link>.
</para>
<para>
De la misma forma, si el sistema está siendo actualizado desde PHP 4, debería
leer la sección del manual <link linkend="migration5">Migración
desde PHP 4 a PHP 5.0.x</link>.
</para>
</section>
<section xml:id="migration52.incompatible">
<title>Incompatibilidades con versiones anteriores</title>
<para>
Si bien la mayoría del código PHP 5 existente debería funcionar sin necesidad
de hacer ningún cambio, debe prestarse atención a las siguientes
incompatibilidades con versiones anteriores:
</para>
<itemizedlist>
<listitem>
<simpara>
<function>getrusage</function> devuelve &null; cuando se pasan argumentos
incompatibles a partir de PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<function>ZipArchive::setCommentName</function>
devuelve &true; en caso de éxito a partir de PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<function>ZipArchive::setCommentIndex</function>
devuelve &true; en caso de éxito a partir de PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<function>SplFileObject::getFilename</function> devuelve el nombre del
fichero, no ruta/relativa/al/fichero, a partir de PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
Ha cambiado la prioridad de la variable de entorno <varname>PHPRC</varname>
en Win32
</simpara>
<simpara>
La variable de entorno <varname>PHPRC</varname> ahora tiene prioridad sobre
la ruta de acceso almacenada en el registro de Windows.
</simpara>
</listitem>
<listitem>
<simpara>
CLI SAPI ya no busca por los ficheros &php.ini; o <filename>php-cli.ini</filename>
en el directorio de trabajo actual.
</simpara>
<simpara>
En PHP 5.1.x fue agregada una característica no documentada que hizo que el
interprete CLI chequeara de forma binaria el directorio de trabajo actual
en busca de un fichero de configuración de PHP, esto puede conducir a un
comportamiento impredecible si un fichero de configuración inesperado fuera
leído. Esta funcionalidad se quitó en 5.2.0, y PHP ya no buscará en el
directorio de trabajo actual por la presencia de los ficheros &php.ini; o
<filename>php-cli.ini</filename>.
Ver también la sección de <link linkend="features.commandline">línea de
comandos</link> del manual.
</simpara>
</listitem>
<listitem>
<simpara>
Se ha añadido una advertencia al realizar operaciones de módulo 0.
</simpara>
<simpara>
En versiones anteriores de PHP, realizar entero % 0 no emitía ningún mensaje
de advertencia, en su lugar solamente devolvía el valor inesperado &false;.
A partir de PHP 5.2.0, esta operación emitirá un <constant>E_WARNING</constant>,
así como en todos los casos donde se realize una división por cero.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
print 10 % 0;
/* Warning: Division by zero in filename on line n */
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
<link linkend="object.tostring">__toString()</link> ha sido cambiado para poder ser llamado
donde sea aplicable.
</simpara>
<simpara>
El método mágico <link linkend="object.tostring">__toString()</link> ahora será llamado en un
contexto de cadena, así de simple, en cualquier lugar donde un objeto sea
usado como una cadena.
</simpara>
<simpara>
La alternativa de devolver una cadena que contiene el identificador del
objeto fue quitada en PHP 5.2.0. Se convirtió en un problema debido a que
un identificador de objeto no puede ser considerado único. Este cambio
significará un daño en aplicaciones que confían en el identificador de
objeto como valor de retorno. Un intento de utilizar ese valor como una
cadena resultará ahora en un error fatal capturable.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class foo {}
$foo = new foo;
print $foo;
/* Catchable fatal error: Object of class foo could
not be converted to string in filename on line n */
?>
]]>
</programlisting>
</informalexample>
<simpara>
Incluso con <link linkend="object.tostring">__toString()</link>, los objetos no pueden ser
usados como índices o claves de array. Podemos agregar soporte integrado
hash para esto más adelante, pero a partir de PHP 5.2.x necesitará
proporcionar su propio hashing o usar la nueva función SPL
<function>spl_object_hash</function>.
</simpara>
<simpara>
No pueden ser lanzadas excepciones desde métodos
<link linkend="object.tostring">__toString()</link>.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class foo {
public function __toString() {
throw new Exception;
}
}
try {
print new foo;
/* Fatal error: Method foo::__toString() must
not throw an exception in filename on line n */
} catch(Exception $e) {}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Quitadas funciones de clase abstractas estáticas.
</simpara>
<simpara>
Debido a un descuido, PHP 5.0.x y 5.1.x permiten funciones abstractas
estáticas en las clases. A partir de PHP 5.2.x, sólo las interfaces pueden
tenerlas.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
abstract class foo {
abstract static function bar();
/* Strict Standards: Static function foo::bar()
should not be abstract in filename on line n */
}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
La <link linkend="ref.oci8">Extensión Oracle</link> requiere al menos Oracle
10 en Windows.
</simpara>
</listitem>
<listitem>
<simpara>
Agregado soporte RFC2397 (flujos <literal>data:</literal>).
</simpara>
<simpara>
La introducción del esquema URL 'data' tiene el potencial de dar lugar a un
cambio de comportamiento bajo Windows. Si se está trabajando con un sistema
de ficheros <acronym>NTFS</acronym> y haciendo uso de meta flujos en la
aplicación, y si sólo se está utilizando un fichero con el nombre 'data:'
al que se accede sin ningún tipo de información de la ruta - esta ya no
funcionará más. La solución es utilizar el protocolo 'file:' cuando se
accede a él.
</simpara>
<simpara>
Ver también <link xlink:href="&url.rfc;2397">RFC 2397</link>
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/* when allow_url_include is OFF (default) */
include "data:;base64,PD9waHAgcGhwaW5mbygpOz8+";
/* Warning: include(): URL file-access is disabled
in the server configuration in filename on line n */
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Regresión en patrones <literal>glob()</literal>
</simpara>
<simpara>
En la versión 5.2.4 una corrección de seguridad provocó una regresión para
patrones de la forma "/foo/*/bar/*". Desde la versión 5.2.5 en lugar de
emitir una advertencia la función <literal>glob()</literal> devolverá
&false; cuando se violan las restricciones <literal>openbase_dir</literal>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.error-messages">
<title>Nuevos Mensajes de Error</title>
<para>
A continuación se presentan los nuevos mensajes de error que no han sido
discutidos en otras partes de este documento.
</para>
<para>
<example>
<title>En el núcleo de PHP</title>
<programlisting role="php">
<![CDATA[
<?php
echo " ";
session_regenerate_id();
/* Warning: session_regenerate_id(): Cannot regenerate
session id - headers already sent in filename on line n */
str_word_count("string", 4);
/* Warning: str_word_count(): Invalid format value 4
in filename on line n */
strripos("foo", "f", 4);
/* Notice: strripos(): Offset is greater than the
length of haystack string in filename on line n */
strrpos("foo", "f", 4);
/* Notice: strrpos(): Offset is greater than the
length of haystack string in filename on line n */
/* As of PHP 5.2.1, when allow_url_include is OFF (default) */
include "php://input";
/* Warning: include(): URL file-access is disabled
in the server configuration in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title><link linkend="language.oop5">Código Orientado a Objetos</link> en el núcleo de PHP</title>
<programlisting role="php">
<![CDATA[
<?php
interface foo {
}
class bar implements foo, foo {
}
/* Fatal error: Class bar cannot implement previously
implemented interface foo in filename on line n */
class foo {
public $bar;
function __get($var)
{
return $this->bar;
}
}
$foo = new foo;
$bar =& $foo->prop;
/* Notice: Indirect modification of overloaded property
foo::$prop has no effect in filename on line n */
class foo implements iterator {
public function current() {
}
public function next() {
}
public function key() {
}
public function valid() {
}
public function rewind() {
}
}
$foo = new foo();
foreach($foo as &$ref) {}
/* Fatal error: An iterator cannot be used with foreach
by reference in filename on line n */
class foo {
private function __construct() {
}
}
class bar extends foo {
public function __construct() {
parent::__construct();
/* Fatal error: Cannot call private
foo::__construct() in filename on line n */
}
}
new bar;
stream_filter_register("", "class");
/* Warning: stream_filter_register(): Filter name
cannot be empty in filename on line n */
stream_filter_register("filter", "");
/* Warning: stream_filter_register(): Class name
cannot be empty in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.bzip2">bzip2</link></title>
<programlisting role="php">
<![CDATA[
<?php
bzopen("", "w");
/* Warning: bzopen(): filename cannot be empty
in filename on line n */
bzopen("foo", "a");
/* Warning: bzopen(): 'a' is not a valid mode for
bzopen(). Only 'w' and 'r' are supported in
filename on line n */
$fp = fopen("foo", "w");
bzopen($fp, "r");
/* Warning: bzopen(): cannot read from a stream
opened in write only mode in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.datetime">datetime</link></title>
<programlisting role="php">
<![CDATA[
<?php
strtotime("today", "now");
/* Warning: strtotime() expects parameter 2 to be
long, string given in filename on line n */
/* A partir de PHP 5.2.1 */
new DateTime(new stdclass);
/* Fatal error: Uncaught exception 'Exception' with
message 'DateTime::__construct() expects parameter
1 to be string, object given' in filename:n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.dbase">dBase</link></title>
<programlisting role="php">
<![CDATA[
<?php
dbase_open("foo", -1);
/* Warning: Invalid access mode -1 in filename on line n */
/* A partir de PHP 5.2.1 */
dbase_open("foo", null);
/* Warning: The filename cannot be empty in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.mcrypt">mcrypt</link></title>
<programlisting role="php">
<![CDATA[
<?php
$key = "esto es una clave secreta";
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td),
MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, "");
/* Warning: mcrypt_generic(): An empty string was
passed in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.oci8">oci8</link></title>
<programlisting role="php">
<![CDATA[
<?php
oci_connect("usuario", "clave", "db", "charset_invalido");
/* Warning: Invalid character set name:
charset_invalido in filename on line n */
$oci = oci_connect("usuario", "clave", "db");
oci_password_change($oci, "", "clave_antigua", "clave_nueva");
/* Warning: username cannot be empty in filename
on line n */
oci_password_change($oci, "usuario", "", "clave_nueva");
/* Warning: old password cannot be empty in filename
on line n */
oci_password_change($oci, "usuario", "clave_antigua", "");
/* Warning: new password cannot be empty in filename
on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.spl">SPL</link></title>
<programlisting role="php">
<![CDATA[
<?php
$obj = new SplFileObject(__FILE__);
$obj->fgetcsv("foo");
/* Warning: SplFileObject::fgetcsv(): delimiter must
be a character in filename on line n */
$obj->fgetcsv(",", "foo");
/* Warning: SplFileObject::fgetcsv(): enclosure must
be a character in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>En la Extensión <link linkend="ref.sem">Semaphore</link> (sysvmsg)</title>
<programlisting role="php">
<![CDATA[
<?php
/* Warning: maximum size of the message has to be
greater then zero in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Un ejemplo <link linkend="ref.zip">Zip</link> 5.2.1+</title>
<programlisting role="php">
<![CDATA[
<?php
$obj = new ZipArchive();
$obj->open('archive.zip');
$obj->setCommentName('', 'comment');
/* Notice: ZipArchive::setCommentName(): Empty string
as entry name in filename on line n */
/* A partir de PHP 5.2.1 */
$obj->getCommentName('');
/* Notice: ZipArchive::getCommentName(): Empty string
as entry name in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="migration52.datetime">
<title>Cambios en el soporte PHP para
<link linkend="ref.datetime">datetime</link></title>
<para>
Desde PHP 5.1.0 ha existido una extensión llamada <literal>date</literal>
en el núcleo de PHP. Esta es una nueva implementación del soporte PHP para
fecha y hora.
A pesar de que tratará de adivinar la configuración de zona horaria de su
sistema, debe establecer la zona horaria manualmente. Puede hacerlo de
cualquiera de las siguientes tres maneras:
</para>
<itemizedlist>
<listitem>
<simpara>
en &php.ini; usando la directiva INI
<link linkend="ini.date.timezone">date.timezone</link>
</simpara>
</listitem>
<listitem>
<simpara>
en el sistema, usando la variable de entorno <varname>TZ</varname>
</simpara>
</listitem>
<listitem>
<simpara>
desde un script, usando la función
<function>date_default_timezone_set</function>
</simpara>
</listitem>
</itemizedlist>
<para>
Todas las <link linkend="timezones">zonas horarias</link> soportadas se
encuentran listadas en el Manual de PHP.
</para>
<para>
Con la llegada de PHP 5.2.x, hay <type>objetos</type> para representar la
fecha y la zona horaria, llamadas <literal>DateTime</literal> y
<literal>DateTimeZone</literal> respectivamente.
Los métodos trazan a funciones procesales de date existentes.
</para>
</section>
<section xml:id="migration52.parameters">
<title>Nuevos Parámetros</title>
<para>
Algunas funciones recibieron nuevos parámetros opcionales en PHP 5.2.x:
</para>
<para>Núcleo de PHP:</para>
<itemizedlist>
<listitem>
<simpara>
<function>htmlentities</function>
- añadido <parameter>double_encode</parameter> en PHP 5.2.3.
</simpara>
</listitem>
<listitem>
<simpara>
<function>htmlspecialchars</function>
- añadido <parameter>double_encode</parameter> en PHP 5.2.3.
</simpara>
</listitem>
<listitem>
<simpara>
<function>base64_decode</function>
- añadido <parameter>strict</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>setcookie</function>
- añadido <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>setrawcookie</function>
- añadido <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_set_cookie_params</function>
- añadido <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>memory_get_usage</function>
- añadido <parameter>real_usage</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_loaded_extensions</function>
- añadido <parameter>zend_extensions</parameter> en PHP 5.2.4
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.curl">curl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>curl_multi_info_read</function>
- añadido <parameter>msgs_in_queue</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.datetime">datetime</link></para>
<itemizedlist>
<listitem>
<simpara>
<function>date</function>
- añadido carácter de formato "u" (milisegundos) en PHP 5.2.2
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.imap">imap</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>imap_open</function>
- añadido <parameter>n_retries</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_reopen</function>
- añadido <parameter>n_retries</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.mbstring">mbstring</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>mb_strrpos</function>
- añadido <parameter>offset</parameter>
</simpara>
<warning>
<simpara>
El parámetro <parameter>offset</parameter> se puso en la posición en la
que se encontraba el parámetro <parameter>encoding</parameter>.
Se ha proporcionado compatibilidad con versiones anteriores al permitir
que se especifique la codificación (<parameter>encoding</parameter>) como
tercer parámetro. No se recomienda el uso de este modo de compatibilidad
debido a que será removido en futuros lanzamientos de PHP.
</simpara>
</warning>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>SWFMovie::streamMP3</function>
- añadido <parameter>skip</parameter> en PHP 5.2.1
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_verify</function>
- añadido <parameter>signature_algo</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pgsql">pgsql</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>pg_escape_bytea</function>
- añadido <parameter>connection</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>pg_escape_string</function>
- añadido <parameter>connection</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.simplexml">simplexml</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>SimpleXMLElement::__construct</function>
- añadido <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>SimpleXMLElement::attributes</function>
- añadido <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>SimpleXMLElement::children</function>
- añadido <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>simplexml_load_file</function>
- añadido <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>simplexml_load_string</function>
- añadido <parameter>is_prefix</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
array iterator_to_array(Traversable iterator [, bool use_keys = true])
- fue añadido <parameter>use_keys</parameter> en PHP 5.2.1
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="book.xmlreader">xmlreader</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>XMLReader::open</function>
- añadidos <parameter>encoding</parameter>
y <parameter>options</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>XMLReader::XML</function>
- añadidos <parameter>encoding</parameter>
y <parameter>options</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.xmlwriter">XMLWriter</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>xmlwriter_write_element</function>
- el parámetro <parameter>content</parameter> se hizo opcional en PHP 5.2.3
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_write_element_ns</function>
- el parámetro <parameter>content</parameter> se hizo opcional en PHP 5.2.3
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.functions">
<title>Nuevas Funciones</title>
<para>
PHP 5.2.x incorpora algunas nuevas funciones:
</para>
<para>PHP Core:</para>
<itemizedlist>
<listitem>
<simpara>
<function>array_fill_keys</function>
- Crea un array usando los elementos del primer parámetro como claves,
con cada elemento inicializado con valor <literal>val</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<function>error_get_last</function>
- Obtiene el último error ocurrido como array asociativo. Devuelve &null;
si aún no se ha producido ningún error.
</simpara>
</listitem>
<listitem>
<simpara>
<function>image_type_to_extension</function>
- Obtiene la extensión de fichero para tipo de imagen retornado por
<function>getimagesize</function>, <function>exif_read_data</function>,
<function>exif_thumbnail</function>, <function>exif_imagetype</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>memory_get_peak_usage</function>
- Devuelve el máximo asignado por memoria de PHP
</simpara>
</listitem>
<listitem>
<simpara>
<function>sys_get_temp_dir</function>
- Devuelve la ruta al directorio usado para ficheros temporales (Agregado
en 5.2.1)
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_abbreviations_list</function>
- Devuelve matriz asociativa que contiene horario de verano, la
compensación y el nombre de zona horaria
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_identifiers_list</function>
- Devuelve una matriz indexada numéricamente con todos los identificadores
de zona horaria
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_name_from_abbr</function>
- Devuelve el nombre de zona horaria a partir de su abreviatura.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_socket_shutdown</function>
- Causa que toda o parte de una conexión full-duplex en el socket asociado
con flujo se cierre. A partir de PHP 5.2.1.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.image">Image</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>imagegrabscreen</function>
- Realiza una captura de pantalla de toda la pantalla. A partir de PHP 5.2.2.
</simpara>
</listitem>
<listitem>
<simpara>
<function>imagegrabwindow</function>
- Captura una ventana. A partir de PHP 5.2.2.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="book.libxml">libXML</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>libxml_disable_entity_loader</function>
- Deshabilita la capacidad de cargar entidades externas. A partir de PHP 5.2.11.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.mbstring">mbstring</link>:</para>
<itemizedlist>
<!--
FIXME: Apparently these two never made it into a release
see bug#41070
<listitem>
<simpara>
<function>mb_list_encodings_alias_names</function>
- Returns an array of all supported entity encodings
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_list_mime_names</function>
- Returns an array or string of all supported mime names
</simpara>
</listitem>
-->
<listitem>
<simpara>
<function>mb_stripos</function>
- Encuentra la posición de la primer aparición de una cadena dentro de
otra, sin diferenciar entre mayúsculas y minúsculas.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_stristr</function>
- Encuentra la primer aparición de una cadena dentro de otra, sin
diferenciar entre mayúsculas y minúsculas.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strrchr</function>
- Encuentra la última aparición de un carácter en una cadena dentro de otra.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strrichr</function>
- Encuentra la última aparición de un carácter en una cadena dentro de otra,
sin diferenciar entre mayúsculas y minúsculas.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strripos</function>
- Encuentra la posición de la última aparición de una cadena dentro de otra,
sin diferenciar entre mayúsculas y minúsculas.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strstr</function>
- Encuentra la primer aparición de una cadena dentro de otra.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link> (A partir de PHP 5.2.1):</para>
<itemizedlist>
<listitem>
<simpara>
void ming_setSWFCompression(int num)
- Establece la compresión de salida
</simpara>
</listitem>
<listitem>
<simpara>
void swfmovie::namedanchor(string name)
- Crea ancla
</simpara>
</listitem>
<listitem>
<simpara>
void swfmovie::protect([string password])
- Protege
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_csr_get_public_key</function>
- Extrae llave pública de un certificado y la prepara para su uso
</simpara>
</listitem>
<listitem>
<simpara>
<function>openssl_csr_get_subject</function>
- Devuelve el asunto de un certificado
</simpara>
</listitem>
<listitem>
<simpara>
<function>openssl_pkey_get_details</function>
- Devuelve una matriz con los detalles de la clave (bits, pkey, type)
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>spl_object_hash</function>
- Devuelve el hash id para un objeto dado
</simpara>
</listitem>
<listitem>
<simpara>
int iterator_apply(Traversable iterator, mixed function [, mixed params])
- Llama una función para cada elemento en un iterador
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pcre">pcre</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>preg_last_error</function>
- Devuelve el código de error de la última ejecución regex
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pgsql">pgsql</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>pg_field_table</function>
- Devuelve el nombre del campo de la tabla a la que pertenece, o el oid de
la tabla si <literal>oid_only</literal> es &true;
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.posix">posix</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>posix_initgroups</function>
- Calcular el grupo de lista de acceso para el usuario especificado en
nombre
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.gmp">gmp</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>gmp_nextprime</function>
- Encuentra el siguiente número primo
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.xmlwriter">xmlwriter</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>xmlwriter_full_end_element</function>
- Finaliza elemento actual - retorna &false; en caso de error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_write_raw</function>
- Escribe texto - retorna &false; en caso de error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_start_dtd_entity</function>
- Crea inicio de Entidad DTD - retorna &false; en caso de error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_end_dtd_entity</function>
- Finaliza la Entidad DTD actual - retorna &false; en caso de error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_write_dtd_entity</function>
- Escribe una etiqueta completa de una Entidad DTD - retorna &false; en
caso de error
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.methods">
<title>Nuevos Métodos</title>
<para>
Nuevos métodos introducidos en 5.2.0:
</para>
<para><link linkend="book.dom">dom</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>DOMDocument::registerNodeClass</function>
- Registra la clase extendida usada para crear el tipo de nodo base
</simpara>
</listitem>
<listitem>
<simpara>
<function>DOMElement::setIDAttribute</function>
- Declara el atributo especificado por su nombre para ser de tipo ID
</simpara>
</listitem>
<listitem>
<simpara>
<function>DOMElement::setIDAttributeNode</function>
- Declara el atributo especificado por nodo para ser de tipo ID
</simpara>
</listitem>
<listitem>
<simpara>
<function>DOMElement::setIDAttributeNS</function>
- Declara el atributo especificado por el nombre local y URI de espacio de
nombre para ser de tipo ID
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>DOMNode::C14N</methodname>([bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]])
- Canónicaliza nodos a una cadena
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>DOMNode::C14NFile</methodname>(string uri [, bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]])
- Canónicaliza nodos a un fichero
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>DOMNode::getNodePath</methodname>()
- Obtiene un <literal>xpath</literal> para un nodo
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.soap">soap</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<methodname>SoapServer::setObject</methodname>(object obj)
- Fija el objeto que manejará las peticiones SOAP
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
int <methodname>ArrayObject::asort</methodname>(void)
- Ordena las entradas por valores
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>ArrayObject::ksort</methodname>(void)
- Ordena las entradas por clave
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>ArrayObject::natcasesort</methodname>(void)
- Ordena las entradas por clave usando un algoritmo de "orden natural" sin
diferenciación entre mayúsculas y minúsculas.
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>ArrayObject::natsort</methodname>(void)
- Ordena las entradas por valor usando un algoritmo de "orden natural".
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>ArrayObject::uasort</methodname>(callback cmp_function)
- Ordena las entradas por valor usando una función definida por el usuario.
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>ArrayObject::uksort</methodname>(callback cmp_function)
- Ordena las entradas por clave usando una función definida por el usuario.
</simpara>
</listitem>
<listitem>
<simpara>
ArrayIterator <methodname>AppendIterator::getArrayIterator</methodname>()
- Obtiene acceso al <literal>ArrayIterator</literal> interno
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>AppendIterator::getIteratorIndex</methodname>()
- Obtiene el índice del iterator
</simpara>
</listitem>
<listitem>
<simpara>
bool <methodname>CachingIterator::getCache</methodname>()
- Devuelve el caché
</simpara>
</listitem>
<listitem>
<simpara>
int <methodname>CachingIterator::getFlags</methodname>()
- Devuelve las banderas internas
</simpara>
</listitem>
<listitem>
<simpara>
bool <methodname>CachingIterator::offsetExists</methodname>(mixed index)
- Devuelve &true; si el índice solicitado existe
</simpara>
</listitem>
<listitem>
<simpara>
string <methodname>CachingIterator::offsetGet</methodname>(mixed index)
- Devuelve el caché interno si es usado
</simpara>
</listitem>
<listitem>
<simpara>
void <methodname>CachingIterator::offsetSet</methodname>(mixed index, mixed newval)
- Fija el índice dado en caché
</simpara>
</listitem>
<listitem>
<simpara>
void <methodname>CachingIterator::offsetUnset</methodname>(mixed index)
- Destruye el índice dado en caché
</simpara>
</listitem>
<listitem>
<simpara>
void <methodname>CachingIterator::setFlags</methodname>()
- Fija las banderas internas
</simpara>
</listitem>
<listitem>
<simpara>
array("delimiter" =>, "enclosure" =>) <methodname>SplFileObject::getCsvControl</methodname>(void)
- Obtiene el delimitador y carácter de cierre de campo usado en
<function>fgetcsv</function>
</simpara>
</listitem>
<listitem>
<simpara>
void <methodname>SplFileObject::setCsvControl</methodname>([string delimiter = ',' [, string enclosure = '"']])
- Fija el delimitador y carácter de cierre de campo usado en
<function>fgetcsv</function>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.tidy">Tidy</link></para>
<itemizedlist>
<listitem>
<simpara>
tidyNode <methodname>tidyNode::getParent</methodname>()
- Devuelve el nodo padre del nodo actual (Añadido en PHP 5.2.2)
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="book.xmlreader">XMLReader</link></para>
<itemizedlist>
<listitem>
<simpara>
boolean <function>XMLReader::setSchema</function>
- Utiliza el esquema XSD de W3C para validar el documento mientras se
procesa. Sólo es posible su activación antes de la primer llamada a
<function>XMLReader::read</function>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.zip">zip</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<methodname>ZipArchive::addEmptyDir</methodname>()
- Crea un directorio vacío en el fichero
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.removed-extensions">
<title>Extensiones eliminadas</title>
<para>
Estas extensiones han sido movidas a PECL y ya no forman parte de la
distribución de PHP. La versión del paquete PECL de estas extensiones se
creará de acuerdo a la demanda del usuario.
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.filepro">filePro</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.hwapi">Hyperwave API</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.new-extensions">
<title>Nuevas Extensiones</title>
<para>
Los siguientes son nuevas extensiones agregadas (por defecto) a partir de PHP
5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.filter">Filter</link>
- valida y filtra datos, y está diseñado para ser usado con datos inseguros
como ser los ingresados por el usuario. Esta extensión está activada de
forma predeterminada; el modo predeterminado RAW no afecta los datos de
entrada de ninguna manera.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.json">JSON</link>
- implementa el formato de intercambio de datos 'JavaScript Object
Notation' (JSON). Esta extensión está activada por defecto.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.zip">Zip</link>
- permite leer y escribir de forma transparente archivos comprimidos con
ZIP y los ficheros dentro de ellos.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.classes">
<title>Nuevas Clases</title>
<para>
Las siguientes clases fueron añadidas en PHP 5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.datetime">DateTime</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.datetime">DateTimeZone</link>
</simpara>
</listitem>
<listitem>
<simpara>
RegexIterator - extiende de <classname>FilterIterator</classname>;
implementa <classname>Iterator</classname>, <classname>Traversable</classname>,
<classname>OuterIterator</classname>
</simpara>
<simpara>
Constantes:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>RegexIterator::ALL_MATCHES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::GET_MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::REPLACE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::SPLIT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::USE_KEY</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Propiedades:
</simpara>
<itemizedlist>
<listitem>
<simpara>
public <property>replacement</property>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Métodos:
</simpara>
<itemizedlist>
<listitem>
<simpara>
RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]])
- Crea un objeto <literal>RegexIterator</literal> desde otro iterador y
una expresión regular
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::accept()
- Realiza una comparación entre (string)current() y una expresión regular
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getFlags()
- Devuelve las banderas de la operación actual
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getMode()
- Devuelve el modo de la operación actual
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getPregFlags()
- Devuelve las banderas actuales PREG (si está en uso o &null;)
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setFlags(int new_flags)
- Fija banderas de la operación
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setMode(int new_mode)
- Fija el nuevo modo de la operación
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setPregFlags(int new_flags)
- Fija banderas PREG
</simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>
RecursiveRegexIterator
</simpara>
<simpara>
Constantes:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::ALL_MATCHES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::GET_MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::REPLACE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::SPLIT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::USE_KEY</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Métodos:
</simpara>
<itemizedlist>
<listitem>
<simpara>
RecursiveRegexIterator::__construct(RecursiveIterator iterator, string regex [, int mode [, int flags [, int preg_flags]]])
- Crea un objeto <literal>RecursiveRegexIterator</literal> desde otro
iterador recursivo y una expresión regular
</simpara>
</listitem>
<listitem>
<simpara>
RecursiveRegexIterator RecursiveRegexIterator::getChildren()
- Devuelve los hijos del iterador interno contenido en un
<literal>RecursiveRegexIterator</literal>
</simpara>
</listitem>
<listitem>
<simpara>
bool RecursiveRegexIterator::hasChildren()
- Comprueba si el elemento actual del iterador interno tiene hijos
</simpara>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.global-constants">
<title>Nuevas Constantes Globales</title>
<para>Núcleo de PHP:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>M_EULER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_LNPI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_SQRT3</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_SQRTPI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PATHINFO_FILENAME</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_BACKTRACK_LIMIT_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_BAD_UTF8_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_INTERNAL_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_NO_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_RECURSION_LIMIT_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>UPLOAD_ERR_EXTENSION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_RD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_WR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_RDWR</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.curl">curl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>CURLE_FILESIZE_EXCEEDED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLE_FTP_SSL_FAILED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLE_LDAP_INVALID_URL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_DEFAULT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_SSL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_TLS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_ALL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_CONTROL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_NONE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_TRY</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_FTP_SSL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_FTPSSLAUTH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_TCP_NODELAY</constant>
</simpara>
<simpara>
Añadido en PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_TIMEOUT_MS</constant>
</simpara>
<simpara>
Añadido en PHP 5.2.3
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_CONNECTTIMEOUT_MS</constant>
</simpara>
<simpara>
Añadido en PHP 5.2.3
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.gmp">GMP</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>GMP_VERSION</constant>
</simpara>
<simpara>
Añadido en PHP 5.2.2.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>SWFTEXTFIELD_USEFONT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWFTEXTFIELD_AUTOSIZE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NOT_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_ADPCM_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_MP3_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NOT_COMPRESSED_LE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NELLY_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_5KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_11KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_22KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_44KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_8BITS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_16BITS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_MONO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_STEREO</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>OPENSSL_VERSION_NUMBER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_VERSION_TEXT</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.snmp">snmp</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>SNMP_OID_OUTPUT_FULL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SNMP_OID_OUTPUT_NUMERIC</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.sem">Semaphore</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>MSG_EAGAIN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MSG_ENOMSG</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.class-constants">
<title>Nuevas Constantes de Clase</title>
<para><link linkend="intro.pdo">pdo</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>PDO::ATTR_DEFAULT_FETCH_MODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FETCH_PROPS_LATE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FETCH_KEY_PAIR</constant>
</simpara>
<simpara>
Recupera un resultado de 2 columnas hacia una matriz asociativa. (Añadido
en PHP 5.2.3)
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>CachingIterator::FULL_CACHE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CachingIterator::TOSTRING_USE_INNER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::READ_AHEAD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::READ_CSV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::SKIP_EMPTY</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.newconf">
<title>Nuevas Directivas de Configuración INI</title>
<para>
Nuevas directivas &php.ini; introducidas en PHP 5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.allow-url-include">allow_url_include</link>
</simpara>
<simpara>
Esta útil opción hace posible distinguir entre las operaciones de ficheros
estándar en ficheros remotos, y la inclusión de ficheros remotos. Mientras
que el anterior es generalmente deseable, este último puede ser un riesgo
para la seguridad si se usa de forma ingenua. Comenzando con PHP 5.2.0, es
posible habilitar operaciones sobre ficheros remotos mientras que rechaza
la inclusión de ficheros remotos en scripts locales. De hecho, ésta es la
configuración de defecto.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
</simpara>
<simpara>
Límite de marcha atrás de PCRE.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link>
</simpara>
<simpara>
Límite de recursividad de PCRE. Tenga en cuenta que si establece este valor
a un número elevado puede consumir toda la pila de procesos disponible y,
finalmente, colapsar PHP (porque ha alcanzado el límite de tamaño de pila
impuestas por el sistema operativo).
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.session.cookie-httponly">session.cookie_httponly</link>
</simpara>
<simpara>
Marca la cookie como accesible únicamente a través del protocolo HTTP. Esto
significa que la cookie no será accesible por lenguajes de scripting, como
JavaScript. Esta configuración puede efectivamente ayudar a reducir el robo
de identidad a través de ataques XSS (aunque no es compatible con todos los
navegadores).
</simpara>
</listitem>
</itemizedlist>
<para>
Nuevas directivas en PHP 5.2.2:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.max-input-nesting-level">max_input_nesting_level</link>
</simpara>
<simpara>
Limita que tan profundo pueden ser jerarquizadas las
<link linkend="language.variables.external">variables de entrada</link>,
por defecto es 64.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration52.errorrep">
<title>Reportes de Error</title>
<para>
Algunas de las condiciones existentes de <constant>E_ERROR</constant> se han
convertido en algo que se puede capturado por un manejador de errores
definido por el usuario. Si un <link
linkend="errorfunc.constants"><constant>E_RECOVERABLE_ERROR</constant></link>
no es dirigido al manejador, se comportará de la misma forma que
<constant>E_ERROR</constant> se comporta en todas las versiones del PHP. Los
errores de este tipo se registran como <literal>Catchable fatal error</literal>.
</para>
<para>
Este cambio significa que el valor de la constante para
<link linkend="ini.error-reporting">error_reporting</link> <constant>E_ALL</constant>
ahora es 6143, cuando el valor anterior era 2047. Debido a las constantes de
PHP no tiene significado fuera de PHP, en algunos casos el valor entero se
utiliza en su lugar por lo que estos tendrán que ser ajustados. Así, por
ejemplo estableciendo el modo error_reporting, ya sea desde
<link linkend="apache.configuration">httpd.conf</link> o ficheros
<filename>.htaccess</filename>, el valor tiene que ser cambiado en
consecuencia. Lo mismo se aplica cuando valores numéricos son utilizados en
lugar de las constantes en scripts PHP.
</para>
<para>
Como efecto secundario de un cambio realizado para prevenir mensajes de error
duplicados, cuando <link linkend="ini.track-errors">track_errors</link> están
<literal>On</literal>, es ahora necesario que los manejadores de error
definidos por el usuario devuelvan &false; para propagar
<varname>$php_errormsg</varname>. Esto proporciona un control muy detallado
sobre los niveles de mensajes almacenados.
</para>
</section>
<section xml:id="migration52.other">
<title>Otras mejoras</title>
<itemizedlist>
<listitem>
<simpara>
Se ha mejorado el administrador de memoria y ampliado el límite de memoria
predeterminado.
</simpara>
<simpara>
El nuevo administrador de memoria asigna menos memoria y funciona más
rápido que la representación anterior. Este asigna memoria del sistema en
grandes bloques, y luego administra lo acumulado. El valor de
<literal>memory_limit</literal> es comprobado en &php.ini;, no para cada
llamada a <literal>emalloc()</literal> (como antes), pero si para los bloques
concretos solicitados al sistema. Esto significa que <literal>memory_limit</literal>
es mucho más preciso de lo que solía ser, ya que el antiguo administrador
de memoria no calculaba todos los gastos de memoria utilizada por la
biblioteca <literal>malloc</literal>.
</simpara>
<simpara>
Gracias a esta reciente exactitud puede parecer que el uso de memoria se ha
incrementado, aunque en realidad no es así. Para dar cabida a este aparente
aumento, el valor predeterminado para <literal>memory_limit</literal> fue
incrementado también - de 8 a 16 megabytes.
</simpara>
</listitem>
<listitem>
<simpara>
Añadido soporte para constructores en interfaces para forzar la comprobación
de firma del constructor en implementaciones.
</simpara>
<simpara>
A partir de PHP 5.2.0, las interfaces pueden tener constructores. Sin embargo,
si se opta por declarar un constructor en una interfaz, cada clase que la
implementa DEBE incluir un constructor con una firma que se corresponda con
la del constructor de la interfaz base. Por 'firma' nos referimos a las
definiciones de parámetros y de tipos devueltos,
esto aplica para cualquier declaración de tipo e
incluye si los datos se pasan por referencia o por valor.
</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
-->