¿Qué es lo nuevo en PHP 7.2?

La versión 7.2 de PHP incorporó nuevas características de las cuáles mencionamos algunas:

  1. Nuevo tipo object
  2. Carga de extensiones por nombre
  3. Sobre carga de métodos abstractos
  4. Sodium parte del núcleo de PHP,
  5. Ensanchamiento del tipo de parámetros.

1. Nuevo tipo object

Anteriormente la sentencia object se usaba para convertir un tipo de datos a otros por ejemplo, un arreglo a un objecto de la clase sdtClass y/o viceversa, PHP 7.2 introduce el tipo de de datos object que puede usarse para especificar el tipo de parámetro que recibe una función y/o para el tipo de datos que devuele una función.

<?php

function test(object $obj): object
{
    echo 'Param is type of: ', gettype($obj), nl2br("\n");
    return new SplQueue();
}

$result = test(new StdClass());
echo 'Return is type of: ', gettype($result), nl2br("\n");

// Imprime
// Param is type of: object
// Return is type of: object

2. Carga de extensiones por nombre

Ahora no es necesario especificar la extensión del fichero (.so para Unix, .dll para Windows) cuando se carga una extensión permitiendo mayor portabilidad en el fichero de configuración de php (php.ini)

3. Sobre carga de métodos abstractos

Ahora una clase abstracta que hereda de otra clase abstracta puede modificar/sobreescribir un método abstracto de su clase padre.

<?php

abstract class A
{
    abstract function test(string $s);
}

abstract class B extends A
{
    abstract function test($s) : int;
}

Nótese que la siguiente forma de sobre carga no es permitida.

<?php
abstract class A
{
    abstract function test($s);
}

abstract class B extends A
{
    abstract function test(string $s) : int;
}

El ejemplo anterior da el siguiente mensaje de error

Fatal error: Declaration of B::test(string $s): int must be compatible with A::test($s)

4. Sodium parte del núcleo de PHP

Sodium es una librería moderna y fácil de usar que permite el cifrado, descifrado, firmas, hashing de contraseñas y más… ahora la extensión para PHP forma parte del núcleo del lenguaje de programación.

5. Ensanchamiento del tipo de parámetros

Ahora una clase hija puede omitir el tipo de parámetros al sobreescribir o implementar un método de la clase padre o interfaz respectivamente.

<?php

interface A
{
    public function test(array $input);
}

class B implements A
{
    public function test($input) {}
}

Para ver todos los cambios introducidos por PHP-7.2, consulte Migrar de PHP 7.1.x a PHP 7.2.x


YouTube video

PHP nuevas características, 5 (8)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.