¿Qué hay de nuevo en PHP 7?

Prerrequisito: PHP 7 | Conjunto de características 1

PHP 5 vio muchos lanzamientos menores, siendo emocionante en el camino, incluida la provisión de programación orientada a objetos y muchas funciones relacionadas con ella.

Entonces, ¿por qué 7 y no 6?
Casi todas las características que se consideraron para PHP 6 finalmente se ejecutaron en PHP 5.3 y tuvieron éxito, por lo que no se perdió nada. Finalmente, se puso un nuevo medio para las requests de funciones. Cuando se aceptó el conjunto de rasgos para una versión importante, para evitar confusiones, se saltó a la versión 7 para la versión más reciente.

¿Qué hace que PHP 7 sea único?
La velocidad y el rendimiento mejoraron con PHP 7: menos memoria utilizada por el código base de PHP, se desarrolló un motor más rápido, dicho esto, echemos un vistazo a lo que se ha agregado a este paquete.

  • Arrays constantes usando define(): la constante de array de PHP se puede definir usando la función define(). En PHP 5.6 se define por la palabra clave const.

    <?php
      
    // Use define() function
    define('GFG'
        ['Geeks', 'G4G', 'geek']
    );
      
    // Display content
    echo GFG[0];
    ?>
    Producción:

    Geeks
    
  • Escape Unicode: PHP 7.0.0 ha introducido el «escape de punto de código Unicode». Utiliza un punto de código Unicode en forma hexadecimal y genera ese punto de código en UTF-8 en una string entre comillas dobles. Se permite cualquier punto de código legítimo, incluido el hecho de que los ceros iniciales sean arbitrarios. Por lo tanto, es posible escribir caracteres Unicode de manera eficiente mediante el uso de una string de comillas dobles o heredoc, sin llamar a una función.

    <?php
      
    // Write PHP code
    echo "\u{aa}";
    echo "\u{0000aa}";
    echo "\u{9999}";
    ?>
    Producción:

    ªª�
    

    También se podría hacer escape de caracteres antes, pero usar PHP 7 es mucho más fácil. Incluir el Unicode dentro de una string sin problemas.

    <?php
      
    // Write PHP code
    echo 'You owe me £500.';
    ?>
    Producción:

    You owe me £500.
    

    En este ejemplo, existen caracteres estándar de la A a la Z y de 0 a 9 en uso. Pero tiene un carácter especial, el símbolo de la libra (£). Anteriormente, era necesario escapar estos caracteres, que de lo contrario producirían su código de carácter 163 en la string. Entonces, la salida podría verse como 163500 o algo por el estilo. Esto sería una pesadilla, por lo tanto, tenemos que escapar del símbolo de libra cada vez que, de lo contrario, habría causado un error.
    Entonces, ¿cómo usar el escape Unicode? Unicode practica el hexadecimal para definir el número, mira el resultado

    // Write PHP code
    echo 'You owe me \u{A3}500.';

    Esto también representaría correctamente:

    Me debes 500 libras.

    Entonces, la barra invertida u y las llaves ( \u{} ) son la sintaxis esencial para insertar un carácter hexadecimal Unicode dentro de la string.

  • Filtered Unserialize(): esta función se utiliza para proporcionar una mejor seguridad al deserializar objetos en datos que no son de confianza. Evita las inyecciones de código. La seguridad es la mayor importancia para nosotros, ya que proporciona una mejor deserialización de objetos en datos de una fuente desconocida o que no es de confianza, lo que permite al desarrollador incluir en la lista blanca las clases que se pueden deserializar. Toma una sola variable serializada y devuelve un valor de PHP.

    <?php
      
    // Write PHP code
    class A { 
        public $obj1var;   
    }
    class B {
        public $obj2var;
    }
      
    $obj1 = new A();
    $obj1->obj1var = 10;
      
    $obj2 = new B();
    $obj2->obj2var = 20;
      
    $serializedOb1 = serialize($obj1);
    $serializedOb2 = serialize($obj2);
       
    // If allowed_classes is passed as
    // false, unserialize transforms
    // every all objects in
    // __PHP_Incomplete_Class object
    $data = unserialize($serializedOb1,
             ["allowed_classes" => true]);
        
    // Converts all objects into 
    // __PHP_Incomplete_Class object
    // except those of A and B
    $data2 = unserialize($serializedOb2
         ["allowed_classes" => ["A", "B"]]);
        
    print($data->obj1var);
    print("<br/>");
    print($data2->obj2var);
      
    ?>
    Producción:

    10
    20
  • Declaración de uso de grupo: PHP 7 ha implementado el concepto de grupo en el espacio de nombres de PHP. Esta es una de las excelentes adiciones a los espacios de nombres en PHP 7. Son más sencillos y simplifican la importación de clases, constantes y funciones de una manera compacta. Las declaraciones de uso grupal presentan la capacidad de importar múltiples estructuras desde un espacio de nombres estándar y reducen un buen nivel de verbosidad en la mayoría de los casos. Las declaraciones de uso grupal simplifican la identificación de las diversas entidades importadas que pertenecen al módulo equivalente.
  • Expectativas: todos tenemos ciertas suposiciones, pero no todas estas suposiciones son hechos. Las suposiciones se basan en la lógica y la corazonada, pero no las aborda como hechos. Las suposiciones pueden parecer lógicas en su mente, pero deben estar respaldadas por código para proteger la integridad del procesamiento. Las expectativas significan una mejora compatible con versiones anteriores de la antigua función assert(). Presenta la capacidad de emitir excepciones personalizadas si la afirmación es predeterminada. afirmar() el primer parámetro es una expresión en comparación con una string o un valor booleano para ser examinado.

    <?php
      
    // Write PHP code
    $num = 300;
      
    echo assert( $num > 600, new CustomError(
            "Assumed num was greater than 600"));
      
    ?>
    Producción:

    1
    
  • Opciones de sesión: PHP 7 introduce session_start() para permitir una serie de opciones que anulan las directivas de configuración que se establecen con frecuencia en php.ini.
    Por ejemplo, la directiva session.cache_expire es 180, pero digamos que quiero que mi caché expire durante una sesión en particular durante más tiempo.

    // Write PHP code
    session_start( [
        cache_expire => 380
    ] );

    Ahora uno no tiene que cambiar esta opción reconfigurando la configuración del servidor.

  • Expresiones de devolución del generador: PHP 5.5 había introducido la función de generador que incluía valores de rendimiento y la declaración de devolución tenía que ser la última declaración dentro de ella.

    // Write PHP code
    function genA() {
        yield 20;
        yield 30;
        yield 40;
        return 50;
    }

    De acuerdo con el manual de PHP, “una función de generador parece una función normal excepto que en lugar de devolver un valor, un generador produce tantos valores como necesita. Cualquier función que contenga rendimiento es una función generadora. Puede iterar y recuperar los valores, pero si uno intentara devolver algo, arrojaría un error.

    <?php
      
    $genObj = function (array $number) {
        foreach($number as $num) {
            yield $num * $num;
        }  
        return "Done calculating the square.";  
    };
       
    $result = $genObj([10, 20, 30, 40, 50]);
       
    foreach($result as $value) {
       echo $value . PHP_EOL;
    }
       
    // Grab the return value
    echo $result->getReturn(); 
      
    ?>
    Producción:

    100
    400
    900
    1600
    2500
    Done calculating the square.
    
  • Delegación de generador: en PHP 7, la delegación de generador es el valor de rendimiento de otro generador, un objeto transitable o una array que usa la palabra clave yield from. El generador externo arrojará todos los valores del generador interno, los objetos o la array hasta que ya no sea válido, después de lo cual la ejecución continuará en el generador externo. Si se usa un generador con yield from, la expresión yield from también devolverá cualquier valor devuelto por el generador interno.

    <?php
      
    // Write PHP code
    function mul(array $number) {
        foreach($number as $num) {
            yield $num * $num;
        }  
        yield from sub($number);
    };
       
    function sub(array $number) {
        foreach($number as $num) {
            yield $num - $num;
        }  
    }
       
    foreach(mul([1, 2, 3, 4, 5]) as $value) {
        echo $value . PHP_EOL;
    }
      
    ?>
    Producción:

    1
    4
    9
    16
    25
    0
    0
    0
    0
    0
    

Referencia: http://php.net/manual/en/migration70.new-features.php

Publicación traducida automáticamente

Artículo escrito por jochellemendonca 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 *