Download - PHP 7 - A Maioridade do PHP
![Page 1: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/1.jpg)
A Maioridade do PHP
Daniel Archer - Setembro/2015The Developers Conference 2015 – Porto Alegre
7
![Page 2: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/4.jpg)
Mas e o PHP6?
Fonte: slideshare – Andrei Zmievski – Whats happened to Unicode and PHP6 - 2011
![Page 5: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/16.jpg)
Agosto 2014• Core do PHP recebe o merge do
PHPNG• É aberta a oportunidade de mudar!
![Page 17: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/17.jpg)
![Page 18: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/19.jpg)
Scalar type hints• O PHP é conhecido por ser uma
linguagem de tipagem dinâmica.
![Page 20: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/20.jpg)
Scalar type hints
![Page 21: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/22.jpg)
Return Type Declarations
Fonte: https://wiki.php.net/rfc/return_types
![Page 23: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/24.jpg)
Return Type Declarations
Fonte: https://wiki.php.net/rfc/return_types
![Page 25: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/26.jpg)
Spaceship Operator <=>
![Page 27: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/28.jpg)
Spaceship Operator <=>
Fonte: https://wiki.php.net/rfc/combined-comparison-operator
![Page 29: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/29.jpg)
Spaceship Operator <=>
Fonte: https://wiki.php.net/rfc/combined-comparison-operator
![Page 30: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/30.jpg)
Spaceship Operator <=>
Fonte: https://wiki.php.net/rfc/combined-comparison-operator
![Page 31: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/33.jpg)
Group Use Declarations
Fonte: https://wiki.php.net/rfc/group_use_declarations
![Page 34: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/39.jpg)
Uniform Variable Syntax
Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
![Page 40: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/40.jpg)
Uniform Variable Syntax
Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
![Page 41: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/41.jpg)
... pausa, chega de código.
![Page 42: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/42.jpg)
Resumo PHP7• Novo Core
![Page 43: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/43.jpg)
Resumo PHP7• Novo Core• Novos Operadores
![Page 44: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/44.jpg)
Resumo PHP7• Novo Core• Novos Operadores• Melhor desempenho
![Page 45: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/45.jpg)
Resumo PHP7• Novo Core• Novos Operadores• Melhor desempenho• Preparado para futuras melhorias–Multithread?
![Page 46: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/46.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/47.jpg)
Notícias• HHVM x PHP7
![Page 48: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/48.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/52.jpg)
Certificação ZCPEDesconto de 25%
Créditos: Cyrille Grandval
https://goo.gl/qX38vJ
![Page 53: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/53.jpg)
Z-RayFerramenta para debug, agora não
mais vinculada ao Zend Server
https://goo.gl/TqKHfJ
![Page 54: PHP 7 - A Maioridade do PHP](https://reader035.vdocuments.site/reader035/viewer/2022081418/58f1ef191a28ab9b538b45b1/html5/thumbnails/54.jpg)