PHP 7 - A Maioridade do PHP

1.079 visualizações

Publicada em

Nessa palestra apresentarei o que mudou e por que mudou na nova major version do PHP. Grandes mudanças possibilitaram uma melhor padronização da linguagem, novas possibilidades e encorparam ainda mais esse universo que temos.
Novidades, mudanças, notícias e incompatibilidades do PHP7.

Publicada em: Software
0 comentários
10 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.079
No SlideShare
0
A partir de incorporações
0
Número de incorporações
66
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
10
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PHP 7 - A Maioridade do PHP

  1. 1. A Maioridade do PHP Daniel Archer - Setembro/2015 The Developers Conference 2015 – Porto Alegre 7
  2. 2. Quem sou eu Formado pelo Senac em 2011 Palestrante da PHP Conference Brasil 5 Anos de experiência em PHP Desenvolvedor PHP Sênior na Servicoop Coordenador PHPRS
  3. 3. Mas e o PHP6? • 2005 – Andrei Zmievski • UTF-16 • Unicode everywhere! – Core – Extensões – API • PHP6 = PHP5 + Unicode Fonte: slideshare – Andrei Zmievski – Whats happened to Unicode and PHP6 - 2011
  4. 4. Mas e o PHP6? Fonte: slideshare – Andrei Zmievski – Whats happened to Unicode and PHP6 - 2011
  5. 5. Por que não PHP 5.7 ? • Limpeza do código • Refatorar antigas funções • Novas funcionalidade Fonte: https://wiki.php.net/rfc/php7_57_roadmap
  6. 6. Por que não PHP 5.7 ? • Limpeza do código • Refatorar antigas funções • Novas funcionalidade • Novo core PHPNG Fonte: https://wiki.php.net/rfc/php7_57_roadmap
  7. 7. PHPNG? • PHP Next Generation • Branch criado pela Zend em Jan/2014 • Nenhuma funcionalidade extra • Foco na performance (como?) Fonte: https://wiki.php.net/phpng
  8. 8. PHPNG? • PHP Next Generation • Branch criado pela Zend em Jan/2014 • Nenhuma funcionalidade extra • Foco na performance (como?) – Com a possibilidade de prever qual o tipo de valor será retornado, é possível otimizar a estrutura de dados. (Ver mais: Talk ZendCon-2014) Fonte: https://wiki.php.net/phpng
  9. 9. HashTable • HashTable reduzida de 72 para 56 bytes • Bucket reduzido de 72 to 32 bytes Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng
  10. 10. 1001 Pequenas Melhorias • Nova HashTable API • Otimização na duplicação de Arrays • Contagem de Referências ao invés de copia-las • Otimização do Serialize() • Etc.. Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng
  11. 11. PHPNG Performance PHP 5.6 PHPNG Memory Usage 428 MB Time 0.29 sec Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng
  12. 12. PHPNG Performance PHP 5.6 PHPNG Memory Usage 428 MB 33 MB Time 0.29 sec 0.06 sec Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng
  13. 13. PHP-5.6 PHP-7 HHVM- 3.3.0 Diff ZF1 Hello 1150 1655 961 72% ZF2 Test 269 421 260 62% Drupal 194 281 261 8% SugarCRM (login) 132 225 165 36% Magento 43 57 60 -5% Symfony 2.5 ACME 85 110 92 20% Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng PHPNG Performance [req / seg]
  14. 14. Wordpress Performace Tarefa: Wordpress Homepage • Antes dos PHPNG – 9.4 Bilhões de instruções de CPU • Com PHPNG Fonte: https://www.zend.com/en/resources/php-7
  15. 15. Wordpress Performace Tarefa: Wordpress Homepage • Antes dos PHPNG – 9.4 Bilhões de instruções de CPU • Com PHPNG – 2.6 Bilhões de instruções de CPU 72% menos! Fonte: https://www.zend.com/en/resources/php-7
  16. 16. Agosto 2014 • Core do PHP recebe o merge do PHPNG • É aberta a oportunidade de mudar!
  17. 17. Novas Features • Scalar Type Declarations • Return Type Declarations • Combined Comparison Operator (Spaceship) • Null Coalesce Operator • Anonymous Classes • Unicode Codepoint Escape Syntax • Closure call() Method • Group Use Declarations • Session_start() Options • Support for Array Constants in define() Fonte: https://github.com/tpunt/PHP7-Reference
  18. 18. Scalar type hints • O PHP é conhecido por ser uma linguagem de tipagem dinâmica.
  19. 19. Scalar type hints
  20. 20. Return Type Declarations • A proposta desse RFC era simples. • Possibilitar a garantia do retorno de uma função ou método. Fonte: https://wiki.php.net/rfc/return_types
  21. 21. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types
  22. 22. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types must be of the type array
  23. 23. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types
  24. 24. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types must be of the type int, integer returned
  25. 25. Spaceship Operator <=>
  26. 26. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator • Utilizado principalmente em funções de ordenação • 3 retornos possíveis – Inteiro positivo • operador da esquerda é maior – Zero • operadores iguais – Inteiro negativo • operador da direita é maior
  27. 27. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  28. 28. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  29. 29. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  30. 30. Null Coalesce Operator Fonte: https://github.com/tpunt/PHP7-Reference#null-coalesce-operator • Figura antiga em banco de dados • Finalmente temos um operador para diversos valores nulos
  31. 31. Group Use Declarations Fonte: https://wiki.php.net/rfc/group_use_declarations • Possibilidade de realizar uma chamada Use para diversas classes do mesmo grupo. • Lembrando, o uso é opcional.
  32. 32. Group Use Declarations Fonte: https://wiki.php.net/rfc/group_use_declarations
  33. 33. Alterações (Atenção) • Uniform Variable Syntax • Changes to list’s behavior • Fixes to Custom Session Handler Return Values • Deprecation of PHP 4-Style Constructors • Removal of date.timezone Warning • Removal of Alternative PHP Tags • Removal of Multiple Default Blocks in Switch Statements Fonte: https://github.com/tpunt/PHP7-Reference
  34. 34. Adeus • ext/mysql • ext/ereg • $obj =& new ClassName; • PHP 4 Constructors • <script language=“PHP”></script> • <% ... %> Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  35. 35. Adeus • ext/mysql • ext/ereg • $obj =& new ClassName; • PHP 4 Constructors • <script language=“PHP”></script> • <% ... %> Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  36. 36. Incompatibilidades • Adicionadas palavras a lista de reservadas – Int – Float – Bool – String – True – False – Null – Resourse – Object – Mixed – Numeric Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  37. 37. Uniform Variable Syntax • Muda completamente o modo que o PHP realiza a leitura de variáveis variáveis. • A leitura passa a ser sempre da esquerda para a direita Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  38. 38. Uniform Variable Syntax Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
  39. 39. Uniform Variable Syntax Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
  40. 40. ... pausa, chega de código.
  41. 41. Resumo PHP7 • Novo Core
  42. 42. Resumo PHP7 • Novo Core • Novos Operadores
  43. 43. Resumo PHP7 • Novo Core • Novos Operadores • Melhor desempenho
  44. 44. Resumo PHP7 • Novo Core • Novos Operadores • Melhor desempenho • Preparado para futuras melhorias – Multithread?
  45. 45. Resumo PHP7 • Maturidade – Core otimizado – OOP Muito bem implementada – Coerência Sintática – Preocupação com a Comunidade
  46. 46. Notícias • HHVM x PHP7
  47. 47. Notícias • HHVM x PHP7 • HHVM vai rodar PHP7? – http://stackoverflow.com/questions/31883096/will-hhvm-be-able-to-run-php7 – De Acordo com Josh Watzman, podemos esperar algo assim!
  48. 48. Notícias Fonte: http://devzone.zend.com/6647/introducing-php-7-express/ http://stackoverflow.com/questions/31883096/will-hhvm-be-able-to-run-php7 • HHVM x PHP7 • HHVM vai rodar PHP7? – http://stackoverflow.com/questions/31883096/will-hhvm-be-able-to-run-php7 – De Acordo com Josh Watzman, podemos esperar algo assim! • PHP 7 Express – O Zend Studio 13 virá com uma ferramenta para procurar potenciais incompatibilidades
  49. 49. Notícias • Travis-CI – Já é possível acessar a nova versão do PHP através da build “Nightly” Fonte: http://docs.travis-ci.com/user/languages/php/
  50. 50. PHPRS Grupo de Usuários PHP do Rio Grande Procure pelo Grupo PHPRS no Facebook http://php-rs.org/
  51. 51. Certificação ZCPE Desconto de 25% Créditos: Cyrille Grandval https://goo.gl/qX38vJ
  52. 52. Z-Ray Ferramenta para debug, agora não mais vinculada ao Zend Server https://goo.gl/TqKHfJ

×