php 7 - a maioridade do php

Post on 15-Apr-2017

1.164 Views

Category:

Software

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A Maioridade do PHP

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

7

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

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

Mas e o PHP6?

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

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

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

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

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

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

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)

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

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

PHPNG Performance

PHP 5.6 PHPNG

Memory Usage 428 MB

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

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

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]

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

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

Agosto 2014• Core do PHP recebe o merge do

PHPNG• É aberta a oportunidade de mudar!

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

Scalar type hints• O PHP é conhecido por ser uma

linguagem de tipagem dinâmica.

Scalar type hints

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

Return Type Declarations

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

Return Type Declarations

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

Fatal Errormust be of the type array

Return Type Declarations

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

Return Type Declarations

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

Fatal Errormust be of the type int, integer returned

Spaceship Operator <=>

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

Spaceship Operator <=>

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

Spaceship Operator <=>

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

Spaceship Operator <=>

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

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

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.

Group Use Declarations

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

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

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

Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7

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

Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7

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

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

Uniform Variable Syntax

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

Uniform Variable Syntax

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

... pausa, chega de código.

Resumo PHP7• Novo Core

Resumo PHP7• Novo Core• Novos Operadores

Resumo PHP7• Novo Core• Novos Operadores• Melhor desempenho

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

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

Notícias• HHVM x PHP7

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!

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

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/

PHPRSGrupo de Usuários PHP do Rio Grande

Procure pelo Grupo PHPRS no Facebook

http://php-rs.org/

Certificação ZCPEDesconto de 25%

Créditos: Cyrille Grandval

https://goo.gl/qX38vJ

Z-RayFerramenta para debug, agora não

mais vinculada ao Zend Server

https://goo.gl/TqKHfJ

top related