Nuevas características de PHP 7.4

Introducción: PHP es un popular lenguaje de secuencias de comandos de propósito general. Se utiliza para el desarrollo web. Fue creado por Rasmus Lerdorf en 1994, la implementación de referencia de PHP ahora es producida por PHP Group.

PHP 7.4 Actualización 2019: Las nuevas características de vez en cuando son muy esenciales e importantes para que cualquier idioma crezca. PHP es uno de los lenguajes populares durante muchos años y una de las principales razones es que siguen actualizándolo y agregando nuevas funciones de vez en cuando. El rendimiento de PHP desde su lanzamiento inicial es mucho mejor hoy en día. Además, PHP es uno de los 10 lenguajes de programación más populares.

Nuevas funciones: algunas funciones nuevas de PHP 7.4 se enumeran a continuación:

1. Operador de distribución en Array: PHP 7.4 permitirá utilizar operadores de distribución en arrays que son más rápidos en comparación con array_merge. Un operador de extensión se considera una estructura de lenguaje y array_merge es una función. Además, se ha optimizado el tiempo de compilación.

Ejemplo: Estas son las ilustraciones de las nuevas características añadidas y cómo pueden funcionar.

$prime = ['2', '5'];
$all = ['1', '3', ...$prime, '7'];

Producción:

1, 3, 2, 5, 7

2. Referencias débiles: en PHP 7.4, la clase WeakReference nos permite guardar un enlace a un objeto. No es como la clase WeakRef de la extensión Weakref. Debido a esta característica, podemos implementar fácilmente estructuras similares a caché.

<?php
class Cache {
      
    // var WeakReference[]
    private $objects = [];
       
    // $id is an identifier to store
    // the object, int|string
      
    // Return the stored object,
    // or null if that object is
    // not in the cache
    public function getObject($id) {
        $reference = $this->objects[$id] ?? null;
           
        if($reference === null){
            return null;
        }
           
        return $reference->get();
    }
       
    // The $id is the identifier for
    // the stored object, int|string
    // $object is used to store the object
    public function setObject($id, $object) {
        $this->objects[$id] = 
            WeakReference::create($object);
    }
}
?>

El código anterior es un ejemplo de referencia débil. Una referencia débil es similar a una referencia normal, excepto que no evita que el recolector de elementos no utilizados recopile el objeto.
WeakReference no debe confundirse con WeakRef , que es una extensión de PHP y no una parte nativa de PHP.

3. Precarga: esta característica nos permite cargar archivos, bibliotecas en OPcache. Estas funciones nos permiten precargar los archivos en la memoria.

Ejemplo: es solo una implementación ficticia.

$files = /* An array of files 
    that you want to preload */;
  
foreach ($files as $file) {
    opcache_compile_file($file);
}

Cada archivo PHP que desee precargar debe pasarse a opcache_compile_file() o solicitarse una vez, desde el script de precarga.

4. Función de flecha: elimina la complejidad que había antes, ya que el uso de funciones anónimas aumenta la complejidad en PHP. Ahora, estas características nos permiten hacer que nuestro código sea más conciso y limpio. Esto es solo para eliminar complejidades y simplificar el código.

// A collection of Post objects
$posts = [/* … */];
  
$ids = array_map(function ($post) {
    return $post->id;
}, $posts);

Antes de la actualización, tenemos que escribir el código como se mencionó anteriormente.

// A collection of Post objects
$posts = [/* … */];
  
$ids = array_map(fn($post) => $post->id, $posts);
  • Comienzan con la palabra clave fn
  • Solo tienen una expresión, que es declaración de retorno.
  • No se permite ninguna palabra clave de retorno

5. Lanzar excepciones desde la función __toString(): Anteriormente, la función utilizada para convertir un objeto en una string estaba presente en la biblioteca estándar y, además, muchas de ellas no procesaban las excepciones correctamente.

Sintaxis:

public Exception::__toString( void ) : string

Valor de retorno: es una representación de string de excepción.

<?php
try {
    throw new Exception("error");
} catch(Exception $e) {
    echo $e;
}
?>

6. Operador de asignación fusionado: Esto es muy útil cuando tenemos que usar el operador ternario junto con la función isset() . Esto le permite devolver el primer operando si existe, si no, devolverá el segundo operando. El operador igual de fusión nula se introdujo en PHP 7 para simplificar la comprobación de isset() con el operador ternario.

// Before the 7.4 release
$data['username'] = $data['username'] ?? 'guest';
  
// After 7.4 new feature
$data['username'] ??= 'guest';

7. Separador de literales numéricos: los literales numéricos pueden contener guiones bajos entre dígitos.

6.674_083e-11; // float
299_792_458;   // decimal
0xCAFE_F00D;   // hexadecimal
0b0101_1111;   // binary

Filtro: el filtro FILTER_VALIDATE_FLOAT admite las opciones min_range y max_range, con la misma semántica que FILTER_VALIDATE_INT.

FFI: FFI es una nueva extensión y es una forma sencilla de llamar a funciones nativas, acceder a variables nativas y crear/acceder a estructuras de datos definidas en bibliotecas C.

GD: se agregó el filtro de imagen IMG_FILTER_SCATTER que se usa para aplicar un filtro de dispersión a las imágenes.

Hash: Se agregó hash crc32c usando el polinomio de Castagnoli. Esta variante CRC32 es utilizada por sistemas de almacenamiento, como iSCSI, SCTP, Btrfs y ext4.

PDO: el nombre de usuario y la contraseña se pueden especificar como parte del PDO DSN para los controladores mysql, mssql, sybase, dblib, firebird y oci. Antes del lanzamiento de php 7.4, esta característica solo era compatible con el controlador pgsql.

Referencia: https://www.php.net/manual/en/migration74.new-features.php

Publicación traducida automáticamente

Artículo escrito por akhilsharma870 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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