PHP 7: NOVEDADES, CARACTERÍSTICAS Y CAMBIOS PRINCIPALES
Acabo de migrar mi página web a php 7 y la verdad pensé que iba a ser más crítico. Lo único que he tenido que cambiar es que para conectarse a MySQL hay que usar mysqli o pdo.Uno de los cambios que me ha sorprendido es el Operador combinado de comparación.
Otro cambio como que me ha gustado es sobre los parámetros de las funciones hay que definir los tipos de los parámetros de entrada y del valor de retorno de la función. Es fácil y sencillo como se explica en el siguiente ejemplo:
function getTotal(float $a, float $b) : float {
.....
return $floatNumber;
}>
Pero cuidado si se pone que el tipo de retorno es int no da error sino se devuelve un int, para forzarlo hay que usar la directiva declare(strict_types=1);. Voy a poner un ejemplo:
function getTotal(float $a, float $b) : int {
return $a + $b;
}
getTotal(2, "1 week");
// cambia int(2) a float(2.0) y string("1 week") a float(1.0)
// devuelve int(3);
getTotal(2.8, "3.2");
// cambia string "3.2" a float(3.2)
// devuelve int(6)
getTotal(2.5, 1);
// cambia int(1) a float(1.0)
// devuelve int(3)
//Ojo: Debe ir al principio del fichero
declare(strict_types=1);
function getTotal(float $a, float $b) : int {
// return $a + $b;
// Fatal error: Uncaught TypeError: Return value of getTotal() must be of the type integer, float returned
return (int)($a + $b); // truncate float like non-strict
}
)Otra novedad es que se reemplaza la extensión json por jsond, se permiten múltiples default en switch, se filtra el unserialize() ya que era un error de seguridad como se especificaba sobre la inyección de objetos.
Otra novedad y que es bastante importante es que es bastante más rápido que las versiones anteriores. El nuevo motor de php convierte todos los errores fatales en excepciones por lo que pueden ser mnajeados por el programador.
Otra novedad es el operador de coalescencia nulo que es una mejora del conocido como operador Elvis, que es a su vez una mejora del operador ternario