PHP 7 - A Maioridade do PHP

54
A Maioridade do PHP Daniel Archer - Setembro/2015 The Developers Conference 2015 – Porto Alegre 7

Transcript of PHP 7 - A Maioridade do PHP

Page 1: PHP 7 - A Maioridade do PHP

A Maioridade do PHP

Daniel Archer - Setembro/2015The Developers Conference 2015 – Porto Alegre

7

Page 2: PHP 7 - A Maioridade do PHP

Quem sou euFormado pelo Senac em

2011

Palestrante da PHP Conference Brasil

5 Anos de experiência em PHP

Desenvolvedor PHP Sênior na Servicoop

Coordenador PHPRS

Page 3: PHP 7 - A Maioridade do PHP

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

Page 4: PHP 7 - A Maioridade do PHP

Mas e o PHP6?

Fonte: slideshare – Andrei Zmievski – Whats happened to Unicode and PHP6 - 2011

Page 5: PHP 7 - A Maioridade do PHP

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

Page 6: PHP 7 - A Maioridade do PHP

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

Page 7: PHP 7 - A Maioridade do PHP

Fonte: https://wiki.php.net/phpng

PHPNG?• PHP Next Generation• Branch criado pela Zend em

Jan/2014• Nenhuma funcionalidade extra• Foco na performance (como?)

Page 8: PHP 7 - A Maioridade do PHP

Fonte: https://wiki.php.net/phpng

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)

Page 9: PHP 7 - A Maioridade do PHP

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

Page 10: PHP 7 - A Maioridade do PHP

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

Page 11: PHP 7 - A Maioridade do PHP

PHPNG Performance

PHP 5.6 PHPNG

Memory Usage 428 MB

Time 0.29 secFonte: talk ZendCon-2014 at https://wiki.php.net/phpng

Page 12: PHP 7 - A Maioridade do PHP

PHPNG Performance

PHP 5.6 PHPNG

Memory Usage 428 MB 33 MB

Time 0.29 sec 0.06 secFonte: talk ZendCon-2014 at https://wiki.php.net/phpng

Page 13: PHP 7 - A Maioridade do PHP

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]

Page 14: PHP 7 - A Maioridade do PHP

Wordpress PerformaceTarefa: 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

Page 15: PHP 7 - A Maioridade do PHP

Wordpress PerformaceTarefa: 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

Page 16: PHP 7 - A Maioridade do PHP

Agosto 2014• Core do PHP recebe o merge do

PHPNG• É aberta a oportunidade de mudar!

Page 17: PHP 7 - A Maioridade do PHP
Page 18: PHP 7 - A Maioridade do PHP

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

Page 19: PHP 7 - A Maioridade do PHP

Scalar type hints• O PHP é conhecido por ser uma

linguagem de tipagem dinâmica.

Page 20: PHP 7 - A Maioridade do PHP

Scalar type hints

Page 21: PHP 7 - A Maioridade do PHP

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

Page 22: PHP 7 - A Maioridade do PHP

Return Type Declarations

Fonte: https://wiki.php.net/rfc/return_types

Page 23: PHP 7 - A Maioridade do PHP

Return Type Declarations

Fonte: https://wiki.php.net/rfc/return_types

Fatal Errormust be of the type array

Page 24: PHP 7 - A Maioridade do PHP

Return Type Declarations

Fonte: https://wiki.php.net/rfc/return_types

Page 25: PHP 7 - A Maioridade do PHP

Return Type Declarations

Fonte: https://wiki.php.net/rfc/return_types

Fatal Errormust be of the type int, integer returned

Page 26: PHP 7 - A Maioridade do PHP

Spaceship Operator <=>

Page 27: PHP 7 - A Maioridade do PHP

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

Page 28: PHP 7 - A Maioridade do PHP

Spaceship Operator <=>

Fonte: https://wiki.php.net/rfc/combined-comparison-operator

Page 29: PHP 7 - A Maioridade do PHP

Spaceship Operator <=>

Fonte: https://wiki.php.net/rfc/combined-comparison-operator

Page 30: PHP 7 - A Maioridade do PHP

Spaceship Operator <=>

Fonte: https://wiki.php.net/rfc/combined-comparison-operator

Page 31: PHP 7 - A Maioridade do PHP

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

Page 32: PHP 7 - A Maioridade do PHP

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.

Page 33: PHP 7 - A Maioridade do PHP

Group Use Declarations

Fonte: https://wiki.php.net/rfc/group_use_declarations

Page 34: PHP 7 - A Maioridade do PHP

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

Page 35: PHP 7 - A Maioridade do PHP

Adeus• ext/mysql• ext/ereg• $obj =& new ClassName;• PHP 4 Constructors• <script language=“PHP”></script>• <% ... %>

Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7

Page 36: PHP 7 - A Maioridade do PHP

Adeus• ext/mysql• ext/ereg• $obj =& new ClassName;• PHP 4 Constructors• <script language=“PHP”></script>• <% ... %>

Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7

Page 37: PHP 7 - A Maioridade do PHP

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

Page 38: PHP 7 - A Maioridade do PHP

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

Page 39: PHP 7 - A Maioridade do PHP

Uniform Variable Syntax

Fonte: https://wiki.php.net/rfc/uniform_variable_syntax

Page 40: PHP 7 - A Maioridade do PHP

Uniform Variable Syntax

Fonte: https://wiki.php.net/rfc/uniform_variable_syntax

Page 41: PHP 7 - A Maioridade do PHP

... pausa, chega de código.

Page 42: PHP 7 - A Maioridade do PHP

Resumo PHP7• Novo Core

Page 43: PHP 7 - A Maioridade do PHP

Resumo PHP7• Novo Core• Novos Operadores

Page 44: PHP 7 - A Maioridade do PHP

Resumo PHP7• Novo Core• Novos Operadores• Melhor desempenho

Page 45: PHP 7 - A Maioridade do PHP

Resumo PHP7• Novo Core• Novos Operadores• Melhor desempenho• Preparado para futuras melhorias–Multithread?

Page 46: PHP 7 - A Maioridade do PHP

Resumo PHP7• Maturidade– Core otimizado– OOP Muito bem implementada– Coerência Sintática– Preocupação com a Comunidade

Page 47: PHP 7 - A Maioridade do PHP

Notícias• HHVM x PHP7

Page 48: PHP 7 - A Maioridade do PHP

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!

Page 49: PHP 7 - A Maioridade do PHP

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

Page 50: PHP 7 - A Maioridade do PHP

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/

Page 51: PHP 7 - A Maioridade do PHP

PHPRSGrupo de Usuários PHP do Rio Grande

Procure pelo Grupo PHPRS no Facebook

http://php-rs.org/

Page 52: PHP 7 - A Maioridade do PHP

Certificação ZCPEDesconto de 25%

Créditos: Cyrille Grandval

https://goo.gl/qX38vJ

Page 53: PHP 7 - A Maioridade do PHP

Z-RayFerramenta para debug, agora não

mais vinculada ao Zend Server

https://goo.gl/TqKHfJ

Page 54: PHP 7 - A Maioridade do PHP