SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
QUÉ HAY DE NUEVO EN PHP 7.2
PHP BARCELONA MEETUP
QUÉ HAY DE NUEVO EN PHP 7.2
WHOAMI 🤓
▸ Raúl Araya
▸ Backend Lead Engineer en Broker Genius
▸ @nubeiro
▸ Con PHP desde 1998
QUÉ HAY DE NUEVO EN PHP 7.2
¿QUÉ VEREMOS? 🧐
▸ Un poco de historia
▸ Mejoras en el core
▸ Cambios no retro compatibles
▸ Deprecaciones interesantes
UN POCO DE HISTORIA
#PHP 1.0
▸ 8 junio de 1995
▸ Rasmus Lerdorf
▸ Personal Home Page Tools
UN POCO DE HISTORIA
#PHP / FI 2.0
▸ Noviembre de 1996
▸ PHP / Forms Interpreter
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, …
UN POCO DE HISTORIA
#PHP 4.0
▸ Mayo de 2000
▸ Zend Engine 1.0
▸ Soporte para sesiones
▸ Algo parecido a objetos
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
UN POCO DE HISTORIA
#PHP 5.1
▸ Noviembre de 2005
▸ PDO activado por defecto
UN POCO DE HISTORIA
#PHP 5.2
▸ Noviembre de 2006
▸ Nuevo gestor de memoria
▸ Soporte para JSON, Zip, Filter, DateTime
UN POCO DE HISTORIA
#PHP 5.3
▸ Junio de 2009
▸ Namespaces
▸ Funciones anónimas, closures
▸ goto 🤨
UN POCO DE HISTORIA
#PHP 5.4
▸ Marzo de 2012
▸ Traits
▸ Servidor web de pruebas
▸ Se eliminan register_globals, magic_quotes,
safe_mode
UN POCO DE HISTORIA
#PHP 5.5
▸ Junio 2013
▸ Generators
▸ OPCache,
▸ finally
▸ ::class
UN POCO DE HISTORIA
#PHP 5.6
▸ Agosto 2014
▸ Funciones variádicas (function f (…$params){})
▸ use para funciones y constantes
▸ expresiones escalares constantes
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
UN POCO DE HISTORIA
#PHP 7.0
▸ Errores vs Excepciones
▸ clases anónimas
▸ mejoras en uso de memoria
▸ mejoras en performance
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
UN POCO DE HISTORIA
#PHP 7.2 RC6
▸ 9 noviembre de 2017
MEJORAS EN EL CORE
🤩 OBJECT EN TIPADOS Y COMO KEYWORD
MEJORAS EN EL CORE
🤩 SOBRE ESCRIBIR MÉTODOS ABSTRACTOS
MEJORAS EN EL CORE
🤩 DEPURADO CON INFO ADICIONAL EN EXT/PDO
QUÉ HAY DE NUEVO EN PHP 7.2
MEJORAS EN EL CORE
▸ Información adicional de depurado en ext/PDO
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.
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
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.
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()).
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
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.
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.
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).
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.
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.
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()
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
ESO ES TODO AMIGOS!
🙇 ¡GRACIAS!
We are hiring!
Tenéis🥤🍻 + 🥐 🥨 en la cocina

Más contenido relacionado

La actualidad más candente (19)

Shell script
Shell scriptShell script
Shell script
 
Ejercicios resuelto de shell script
Ejercicios resuelto  de shell scriptEjercicios resuelto  de shell script
Ejercicios resuelto de shell script
 
100 1
100 1 100 1
100 1
 
Printf23
Printf23Printf23
Printf23
 
FUNCIONES EN PHP
FUNCIONES EN PHPFUNCIONES EN PHP
FUNCIONES EN PHP
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 
Apuntes apuntadores 2 a
Apuntes apuntadores 2 aApuntes apuntadores 2 a
Apuntes apuntadores 2 a
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
 
Scripts
ScriptsScripts
Scripts
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 
The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0
 
Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 
Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)Instalar Python 2.7 y 3 en Windows (Anaconda)
Instalar Python 2.7 y 3 en Windows (Anaconda)
 
INVESTIGACION DE ELEMENTOS Y CODIGOS DE C++
INVESTIGACION DE ELEMENTOS Y CODIGOS DE C++INVESTIGACION DE ELEMENTOS Y CODIGOS DE C++
INVESTIGACION DE ELEMENTOS Y CODIGOS DE C++
 
c++
c++c++
c++
 
Prolog file
Prolog fileProlog file
Prolog file
 
Hebras En Accion
Hebras En AccionHebras En Accion
Hebras En Accion
 
Practica 5
Practica 5Practica 5
Practica 5
 
Diego alexis 8
Diego alexis 8Diego alexis 8
Diego alexis 8
 

Similar a Qué hay de nuevo en PHP 7.2

PostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadPostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadSantiago Zarate
 
Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Marcos Ortiz Valmaseda
 
The original hacker Nro 1
The original hacker Nro 1The original hacker Nro 1
The original hacker Nro 1Jorge Brunal
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE MadridKubide
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webParadigma Digital
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsFátima Casaú Pérez
 
El futuro de PHP
El futuro de PHPEl futuro de PHP
El futuro de PHPbarbazul
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grailsbetabeers
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la DebianLeonardo Cezar
 
Ventajas de usar funciones en php
Ventajas de usar funciones en phpVentajas de usar funciones en php
Ventajas de usar funciones en phpGiovanny Cuadros
 

Similar a Qué hay de nuevo en PHP 7.2 (20)

PostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidadPostgreSQL: Un motor Impulsado por una comunidad
PostgreSQL: Un motor Impulsado por una comunidad
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0Estado del Desarrollo de PostgreSQL-9.0
Estado del Desarrollo de PostgreSQL-9.0
 
The original hacker Nro 1
The original hacker Nro 1The original hacker Nro 1
The original hacker Nro 1
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Masterclass ADWE Madrid
Masterclass ADWE MadridMasterclass ADWE Madrid
Masterclass ADWE Madrid
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Introducción a Php basico
Introducción a Php basicoIntroducción a Php basico
Introducción a Php basico
 
El futuro de PHP
El futuro de PHPEl futuro de PHP
El futuro de PHP
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Perl
PerlPerl
Perl
 
Introduccion a ruby
Introduccion a rubyIntroduccion a ruby
Introduccion a ruby
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
PostgreSQL À la Debian
PostgreSQL À la DebianPostgreSQL À la Debian
PostgreSQL À la Debian
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 
Ventajas de usar funciones en php
Ventajas de usar funciones en phpVentajas de usar funciones en php
Ventajas de usar funciones en php
 
Código Bonito con PHP
Código Bonito con PHPCódigo Bonito con PHP
Código Bonito con PHP
 

Qué hay de nuevo en PHP 7.2

  • 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