Você está na página 1de 18

Inicio Libros Tutoriales Eventos Foro Buscar

Las nuevas funciones de PHP 5.5


Nuevas funciones del ncleo de PHP
Una de las nuevas funciones ms tiles aadidas por PHP 5.5 es array_column() , que
extrae todos los valores de una determinada columna del array multidimensional
indicado.

Si utilizas por ejemplo PDO para obtener registros de una base de datos, aunque slo
quieras obtener una columna, el resultado siempre es un array multidimensional:

$resultado = array(
array('nombre' => 'Usuario 1'),
array('nombre' => 'Usuario 54'),
array('nombre' => 'Usuario 231'),
array('nombre' => 'Usuario 4'),

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
// ...
);

Gracias a la nueva funcin array_column() , resulta muy sencillo aplanar ese array para
quedarse solamente con la columna nombre :

$nombres = array_column($resultado, 'nombre');

La funcin array_column() solamente permite extraer una columna cada vez, pero
admite un tercer parmetro opcional que indica la columna cuyos valores se utilizan
como claves del nuevo array. Imagina que el array del ejemplo anterior tuviera ms
columnas de informacin:

$resultado = array(
array(
'id' => 1,
'nombre' => 'Usuario 1',
'edad' => '...',
),
array(
'id' => 54,
'nombre' => 'Usuario 54',

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
'edad' => '...',
),
array(
'id' => 231,
'nombre' => 'Usuario 231',
'edad' => '...',
),
array(
'id' => 4,
'nombre' => 'Usuario 4',
'edad' => '...',
)
);

$nombres = array_column($resultado, 'nombre');


$nombresOrdenadosPorId = array_column($resultado, 'nombre', 'id');

El resultado de ejecutar el cdigo anterior sera:

$nombres = array(
0 => 'Usuario 1',
1 => 'Usuario 54',
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
2 => 'Usuario 231',
3 => 'Usuario 4',
// ...
);

$nombresOrdenadosPorId = array(
1 => 'Usuario 1',
54 => 'Usuario 54',
231 => 'Usuario 231',
4 => 'Usuario 4',
// ...
);

Los valores de la columna que se utiliza como clave no tienen que ser necesariamente
numricos. Si los valores son cadenas de texto, la diferencia ser que el array resultante
es asociativo en vez de numrico.

La nueva funcin json_last_error_msg() devuelve el ltimo mensaje de error


producido al ejecutar la funcin json_encode() o json_decode() . Si no se ha
producido ningn error, devuelve null .

Las versiones anteriores de PHP incluyen varias funciones para convertir una variable a
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
un tipo determinado: intval() , floatval() y strval() . Ahora PHP 5.5 aade la
funcin que faltaba: boolval() , que convierte cualquier variable en un valor booleano:

boolval(0); // false
boolval(42); // true
boolval(0.0); // false
boolval(4.2); // true
boolval(""); // false
boolval("string"); // true
boolval([1, 2]); // true
boolval([]); // false
boolval(new stdClass); // true

Nuevas funciones relacionadas con bases


de datos
La extensin MySQLi ha aadido tres nuevas funciones relacionadas con las
transacciones:

mysqli_begin_transaction() , indica que debe empezar una transaccin.


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
mysqli_release_savepoint() , deshace los cambios de una transaccin y vuelve
hasta el punto de guardado que se indica.

mysqli_savepoint() , crea un nuevo punto de guardado dentro de una transaccin.

Por su parte, la extensin PostgreSQL ha aadido dos nuevas funciones:

pg_escape_literal() , aplica el mecanismo de escape a un contenido antes de


insertarlo en la base de datos. Se recomienda el uso de esta nueva funcin en vez
de pg_escape_string() .

pg_escape_identifier() , aplica el mecanismo de escape a una cadena de texto


que contiene el nombre de una tabla o de un campo de la base de datos y que va a
ser utilizado en una consulta.

Nuevas funciones de la extensin gd


La librera GD utilizada por PHP se ha actualizado a la versin 2.1, lo que aade nuevas
funcionalidades, corrige algunos errores y mejora el rendimiento global.

La nueva funcin imageflip() voltea horizontal o verticalmente una imagen. El primer

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
argumento es la imagen que se manipula y el segundo es una constante que define el
tipo de volteo a realizar: horizontal ( IMG_FLIP_HORIZONTAL ), vertical
( IMG_FLIP_VERTICAL ) o los dos a la vez ( IMG_FLIP_BOTH ).

$rutaImagen = 'foto.png';
$imagen = imagecreatefrompng($rutaImagen);

// voltearla verticalmente
imageflip($imagen, IMG_FLIP_VERTICAL);

// mostrar la imagen en el navegador


imagejpeg($imagen);
imagedestroy($imagen);

Ahora tambin es posible redimensionar imgenes con la funcin imagescale() . El


primer argumento indica la imagen a redimensionar, el segundo argumento indica la
nueva anchura en pxeles, el tercer argumento opcional indica la nueva altura en pxeles
y el cuarto argumento opcional indica el tipo de escalado que se aplica:

$imagen = imagecreatefrompng('foto.png');

// la nueva anchura de la imagen ser 600 pxel


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
// (la altura se calcula automticamente para mantener las proporciones)
imagescale($imagen, 600);

// la nueva imagen ser de 600 x 350 pxeles


// (aunque eso suponga deformar la imagen original)
imagescale($imagen, 600, 350);

// el mtodo empleado para redimensionar la imagen ser


// el escalado bicbico, mucho ms lento pero de ms calidad
// las constantes definidas son:
// * IMG_NEAREST_NEIGHBOUR
// * IMG_BILINEAR_FIXED
// * IMG_BICUBIC
// * IMG_BICUBIC_FIXED
imagescale($imagen, 600, 350, IMG_BICUBIC);

Recortar imgenes es un requerimiento habitual en las aplicaciones web. La nueva


funcin imagecrop() simplifica al mximo esta tarea. Su primer argumento es la
imagen a recortar y el segundo argumento es un array asociativo con las claves x , y ,
width y height que definen el rea de corte:

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
$imagen = imagecreatefrompng('foto.png');

imagecrop($imagen, array('x' => 0, 'y' => 0, 'width' => 100, 'height' =>
200));

Adems de la funcin imagecrop() PHP 5.5 define una funcin relacionada llamada
imagecropauto() para recortar las imgenes de forma automtica. Su primer
argumento es la imagen a recortar y el segundo argumento es alguna de las siguientes
constantes:
IMG_CROP_DEFAULT , IMG_CROP_TRANSPARENT , IMG_CROP_BLACK , IMG_CROP_WHITE y
IMG_CROP_SIDES .

$imagen = imagecreatefrompng('foto.png');

imagecrop($imagen, IMG_CROP_TRANSPARENT);
imagecrop($imagen, IMG_CROP_SIDES);

Por ltimo, se han aadido otras tres funciones menos importantes:


imageaffinematrixconcat() , imageaffinematrixget() y
imagepalettetotruecolor() , que convierte una imagen con un nmero limitado de
colores en una imagen de color verdadero.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Nuevas funciones de la extensin curl
La principal funcin aadida por la extensin cURL es curl_file_create() , que
permite crear fcilmente un objeto de tipo CURLFile para subir archivos con el mtodo
POST de HTTP. Su primer argumento es la ruta del archivo, el segundo argumento
opcional es el tipo MIME del archivo y el tercer parmetro opcional es el nombre con el
que se subir el archivo:

$ch = curl_init('http://librosweb.es/subir_archivo.php');

$archivoCurl = curl_file_create('foto.jpg','image/jpeg','otro_nombre');

curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('otro_nombre' => $archivoCurl)
);

curl_exec($ch);

Si ejecutas el cdigo del ejemplo anterior, el script que responda la URL


subir_archivo.php recibir un archivo llamado otro_nombre , de tipo JPEG y que
contiene la imagen del archivo foto.jpg .
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Adems de esta funcin, se han aadido dos funciones complementarias llamadas
curl_escape() y curl_unescape() . La primera codifica una cadena de texto para que
sea seguro incluirla como parte de una URL. La segunda hace el proceso inverso para
recuperar el contenido original de una cadena de texto codificada como parte de una
URL.

Por ltimo, se han aadido otras funciones como curl_pause() , que detiene o contina
la ejecucin de las peticiones y curl_reset() que inicializa todas las opciones de la
conexin a sus valores por defecto. Para ver el resto de funciones aadidas por cURL
consulta el siguiente enlace: New cURL functions.

Nuevas funciones de la extensin socket


La extensin Socket ha definido tres nuevas funciones: socket_sendmsg() para enviar
un mensaje a travs de un socket, socket_recvmsg() que es la funcin complementaria
para leer los mensajes recibidos a travs de un socket y socket_cmsg_space() , que
calcula el tamao que debera reservarse como buffer de mensajes.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Nuevas funciones de la extensin intl
La extensin intl es con diferencia la que ms funciones ha aadido en esta nueva
versin de PHP. Adems, en el momento de escribir este tutorial casi ninguna de esas
funciones est documentada. Ver listado de nuevas funciones intl.

Nuevas funciones para la lnea de


comandos
Si ejecutas scripts de PHP a travs de la consola de comandos, ahora puedes establecer
el nombre del proceso bajo el que se ejecuta PHP. Este nombre es el que luego aparece
al listar los procesos del servidor con comandos como top y ps . Establece el nombre
del proceso PHP con la funcin cli_set_process_title() y obtn el nombre del
proceso actual con la funcin cli_get_process_title() .

Nuevos argumentos para las funciones


Adems de aadir nuevas funciones, PHP 5.5 cambia los argumentos de algunas de las
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
funciones existentes.

La funcin json_encode() ahora admite un tercer parmetro llamado $depth y que


indica hasta qu nivel de profundidad (para los arrays) o hasta que nivel de recursividad
(para los objetos) se tiene en cuenta para codificar el objeto o array.

Las funciones set_error_handler() y set_exception_handler() ahora admiten el


valor null como argumento. En ese caso, devuelven respectivamente el anterior handler
para errores y excepciones.

Las funciones de la extensin intl han recibido muchos cambios, que puedes consultar
con detalle en el artculo Changed Functions

Por ltimo, la funcin preg_replace() ya no soporta el modificador /e . Utiliza en su


lugar la funcin preg_replace_callback() .

Cambios incompatibles con las versiones


anteriores de PHP
Para que su funcionamiento sea ms parecido al del lenguaje Perl, se ha modificado el

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
comportamiento de las funciones pack() y unpack() .

La funcin pack() ahora soporta el formato Z , que se comporta igual que el formato a
disponible anteriormente.

La funcin unpack() ha sufrido varios cambios:

Ahora soporta el formato Z para las cadenas rellenas con el carcter NULL y se
comporta igual que el formato a (elimina todos los bytes NULL sobrantes).

Si se utiliza el formato a , se mantienen todos los bytes null sobrantes

El formato A ahora eliminar todos los espacios en blanco sobrantes.

El siguiente ejemplo muestra el cdigo que debes utilizar en PHP 5.5 para mantener la
retrocompatibilidad de los datos comprimidos con el formato a :

// cdigo vlido antes de PHP 5.5


$datos = unpack('a5', $datosComprimidos);

// a partir de PHP 5.5 el comportamiento cambia


if (version_compare(PHP_VERSION, '5.5.0-dev', '>=')) {
$datos = unpack('Z5', $datosComprimidos);
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
} else {
$datos = unpack('a5', $datosComprimidos);
}

Por otra parte, se han declarado obsoletas las siguientes cuatro funciones de la
extensin Mcrypt : mcrypt_cbc() , mcrypt_cfb() , mcrypt_ecb() y mcrypt_ofb() .

Funciones eliminadas
Por su poca utilidad prctica, PHP 5.5 ha eliminado las siguientes cuatro funciones cuyo
resultado nicamente serva para mostrar el logotipo de PHP: php_logo_guid() ,
php_egg_logo_guid() , php_real_logo_guid() y zend_logo_guid() .

Comentarios
0 Comentarios LibrosWeb
1 Acceder

Ordenar por los mejores


Recomendar Compartir

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
S el primero en comentar...

S el primero en comentar.

TAMBIN EN LIBROSWEB

Creando fcilmente imgenes de relleno para tus Copias de seguridad avanzadas para bases de
prototipos datos MySQL
3 comentarios hace un ao 1 comentario hace un ao
Miguel Santisteban Interesante este post, Ramon Saki Gracias tengo un scrip para hacer
felicitaciones, te agradezco mucho el que lo hayas copia de seguridad de mi base de datos a Amazon
compartido, saludos! no me haba dando cuenta que

Cmo crear tooltips modernos solamente con CSS Tus formularios de login pronto dejarn de ser
4 comentarios hace un ao seguros
Hugo Martnez Excelente 2 comentarios hace un ao
Jhonathan Calderon Sanchez Gracias por la
informacin :D

Suscrbete d Aade Disqus a tu sitio web Privacidad

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Fecha de publicacin
23 de junio de 2013

ETIQUETAS POPULARES
composer css diseo html javascript php programacin sistemas symfony

SUSCRBETE GRATIS
RSS Todos los tutoriales

RSS Tutoriales de diseo

RSS Tutoriales de programacin

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com

Você também pode gostar