- O documento discute as mudanças e melhorias trazidas pelo PHP 7, incluindo um novo core otimizado, novos operadores e melhor desempenho.
- O PHP 7 introduz novas funcionalidades como declarações de tipo escalar, operador de coalescência nula e operador espaçonave, além de remover funcionalidades obsoletas.
- O novo core do PHP 7 trouxe melhorias significativas de desempenho em benchmarks e frameworks populares.
1. A Maioridade do PHP
Daniel Archer - Setembro/2015
The Developers Conference 2015 – Porto Alegre
7
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. 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. Mas e o PHP6?
Fonte: slideshare – Andrei Zmievski – Whats happened to Unicode and PHP6 - 2011
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. 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. 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. 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. 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. 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. PHPNG Performance
PHP 5.6 PHPNG
Memory Usage 428 MB
Time 0.29 sec
Fonte: talk ZendCon-2014 at https://wiki.php.net/phpng
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. 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. Agosto 2014
• Core do PHP recebe o merge do
PHPNG
• É aberta a oportunidade de mudar!
17.
18. 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
19. Scalar type hints
• O PHP é conhecido por ser uma
linguagem de tipagem dinâmica.
21. 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
27. 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
31. 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
32. 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.
37. 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
38. 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
48. 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!