1. QUÉ HAY DE NUEVO EN PHP 7.2
PHP BARCELONA MEETUP
2. QUÉ HAY DE NUEVO EN PHP 7.2
WHOAMI 🤓
▸ Raúl Araya
▸ Backend Lead Engineer en Broker Genius
▸ @nubeiro
▸ Con PHP desde 1998
3. QUÉ HAY DE NUEVO EN PHP 7.2
¿QUÉ VEREMOS? 🧐
▸ Un poco de historia
▸ Mejoras en el core
▸ Cambios no retro compatibles
▸ Deprecaciones interesantes
4. UN POCO DE HISTORIA
#PHP 1.0
▸ 8 junio de 1995
▸ Rasmus Lerdorf
▸ Personal Home Page Tools
5. UN POCO DE HISTORIA
#PHP / FI 2.0
▸ Noviembre de 1996
▸ PHP / Forms Interpreter
6. UN POCO DE HISTORIA
#PHP 3.0
▸ Junio de 1998
▸ Andi Gutmans, Zeev Suraski (Zend).
▸ PHP: Hypertext Preprocessor
▸ Soporte para extensiones
▸ Soporte para Windows, Mac, …
7. UN POCO DE HISTORIA
#PHP 4.0
▸ Mayo de 2000
▸ Zend Engine 1.0
▸ Soporte para sesiones
▸ Algo parecido a objetos
8. UN POCO DE HISTORIA
#PHP 5.0
▸ Julio de 2004
▸ Zend Engine 2
▸ Cambia el modelo de objetos
▸ 10 años de historia para la 5.x
9. UN POCO DE HISTORIA
#PHP 5.1
▸ Noviembre de 2005
▸ PDO activado por defecto
10. UN POCO DE HISTORIA
#PHP 5.2
▸ Noviembre de 2006
▸ Nuevo gestor de memoria
▸ Soporte para JSON, Zip, Filter, DateTime
11. UN POCO DE HISTORIA
#PHP 5.3
▸ Junio de 2009
▸ Namespaces
▸ Funciones anónimas, closures
▸ goto 🤨
12. UN POCO DE HISTORIA
#PHP 5.4
▸ Marzo de 2012
▸ Traits
▸ Servidor web de pruebas
▸ Se eliminan register_globals, magic_quotes,
safe_mode
13. UN POCO DE HISTORIA
#PHP 5.5
▸ Junio 2013
▸ Generators
▸ OPCache,
▸ finally
▸ ::class
14. UN POCO DE HISTORIA
#PHP 5.6
▸ Agosto 2014
▸ Funciones variádicas (function f (…$params){})
▸ use para funciones y constantes
▸ expresiones escalares constantes
15. UN POCO DE HISTORIA
#PHP 7.0
▸ Diciembre de 2015
▸ null coallesce operator ??
▸ unicode codepoint syntax
▸ tipado: type hinting escalares, retornos, tipado estricto.
▸ spaceship operator
16. UN POCO DE HISTORIA
#PHP 7.0
▸ Errores vs Excepciones
▸ clases anónimas
▸ mejoras en uso de memoria
▸ mejoras en performance
17. UN POCO DE HISTORIA
#PHP 7.1
▸ Diciembre de 2016
▸ visibilidad en constantes de clase
▸ uso de [] para array destructuring
▸ catch para múltiples tipos (catch(Foo|Bar $e) …)
▸ nullable types (function log(?string $message))
▸ void return type
18. UN POCO DE HISTORIA
#PHP 7.2 RC6
▸ 9 noviembre de 2017
19. MEJORAS EN EL CORE
🤩 OBJECT EN TIPADOS Y COMO KEYWORD
20. MEJORAS EN EL CORE
🤩 SOBRE ESCRIBIR MÉTODOS ABSTRACTOS
21. MEJORAS EN EL CORE
🤩 DEPURADO CON INFO ADICIONAL EN EXT/PDO
22. QUÉ HAY DE NUEVO EN PHP 7.2
MEJORAS EN EL CORE
▸ Información adicional de depurado en ext/PDO
23. MEJORAS EN EL CORE
🤩 AMPLIACIÓN DE PARÁMETROS TIPADOS
▸ Los parámetros tipados de métodos sobrescritos o de
implementaciones de interfaces se pueden omitir.
24. MEJORAS EN EL CORE
🤩 OTRAS MEJORAS
▸ libsodium pasa a core (ext/sodium)
▸ carga de extensiones por nombre en .ini
▸ password hashing con Argon2
▸ soporte para Extended Operations en LDAP
▸ ext/sockets puede acceder información de direcciones
(lookup, connect, bind y explain address)
▸ comas finales en grupos de namespaces
25. CAMBIOS NO RETRO COMPATIBLES
😱 GET CLASS NO ACEPTA NULL
▸ Antes, al pasarle NULL a get_class(), se obtenía el nombre
de la clase que contenía la llamada a get_class(). Ahora
lanza un E_WARNING. Para conseguir el mismo
comportamiento hay que llamar a get_class() sin
parámetro.
26. CAMBIOS NO RETRO COMPATIBLES
😱 AVISO AL CONTAR TIPOS NO CONTABLES
▸ Ahora se emitirá una E_WARNING cuando se intente ejecutar
count() sobre tipos no contables (incluye a la función alias
sizeof()).
27. CAMBIOS NO RETRO COMPATIBLES
😱 OTROS CAMBIOS
▸ claves numéricas en objetos y arrays
▸ number_format() no devolverá zeros negativos
▸ ext/hash pasa a usar objetos en lugar de resources
▸ mejoras en configuración por defecto de ssl/tls
28. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾 CADENAS SIN COMILLAS
▸ Las cadenas sin comillas que son constantes no globales se
toman como cadenas.
▸ Esto solía emitir un E_NOTICE.
▸ A partir de ahora emitirá un E_WARNING.
▸ En la siguiente versión mayor, se lanzará una excepción.
29. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾__AUTOLOAD()
▸ El método __autoload() se ha deprecado ya que es
inferior a spl_autoload_register() (debido a que no
permite encadenar autoloaders), y tampoco hay
interoperabilidad entre los dos estilos de autoloading.
30. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾 PARSE_STR() SIN EL SEGUNDO ARGUMENTO
▸ Sin el segundo argumento, parse_str() pasa los
parámetros de la query al ámbito local. Debido a las
implicaciones de seguridad de este uso, se ha deprecado
usar parse_str() sin un segundo argumento.
▸ Esta función debería usarse siempre con dos argumentos
(siendo el segundo el array al que se parsea la query string).
31. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾 EACH()
▸ Esta función es mucho más lenta iterando que un foreach
normal, y es la causa de problemas de implementación en
algunos cambios del lenguaje.
▸ Se ha deprecado para evitar estos problemas en futuros
cambios.
32. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾 ASSERT() CON CADENAS
▸ El uso de assert() con cadenas implicaba que se pasaba
un eval() sobre la cadena.
▸ Para evitar potenciales problemas de ejecución remota de
código, se ha deprecado este uso en favor del uso con
expresiones booleanas.
33. CARACTERÍSTICAS DEPRECADAS EN PHP 7.2
👾 OTROS CAMBIOS
▸ png2wbmp() y jpeg2wbmp() están deprecadas y se eliminarán
en PHP 8
▸ $php_errormsg (¿alguien lo usa? usáis error_get_last()?)
▸ mbstring.func_overload en .ini
▸ casting a unset: (unset) $var
▸ argumento $errcontext para error handlers
▸ gmp_random() en favor de gmp_random_bits() y
gmp_random_range()
34. ESO ES TODO AMIGOS!
📖 REFERENCIAS
▸ https://github.com/php/php-src/blob/php-7.2.0RC6/
UPGRADING
▸ http://php.net/manual/en/migration72.php
▸ http://php.net/manual/en/history.php
35. ESO ES TODO AMIGOS!
🙇 ¡GRACIAS!
We are hiring!
Tenéis🥤🍻 + 🥐 🥨 en la cocina