SlideShare uma empresa Scribd logo
A Maioridade do PHP
Daniel Archer - Setembro/2015
The Developers Conference 2015 – Porto Alegre
7
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
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
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)
Fonte: https://wiki.php.net/phpng
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 sec
Fonte: 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 sec
Fonte: 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 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
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
Agosto 2014
• Core do PHP recebe o merge do
PHPNG
• É aberta a oportunidade de mudar!
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
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
must 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
must 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/
PHPRS
Grupo de Usuários PHP do Rio Grande
Procure pelo Grupo PHPRS no Facebook
http://php-rs.org/
Certificação ZCPE
Desconto de 25%
Créditos: Cyrille Grandval
https://goo.gl/qX38vJ
Z-Ray
Ferramenta para debug, agora não
mais vinculada ao Zend Server
https://goo.gl/TqKHfJ
PHP 7 - A Maioridade do PHP

Mais conteúdo relacionado

Mais procurados

Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
Lucas Vegi
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
Rafael Jaques
 
DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2
Er Galvão Abbott
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
Luís Cobucci
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
Luiz Junior
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
Paulo Dayvson
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
guest9c455546
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
Sérgio Souza Costa
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
Norivan Oliveira
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
Fabio Moura Pereira
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
Cassio Santos
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
Thiago Carlos
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
Bruno Rocha
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
Relsi Maron
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
Helton Ritter
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
Cezar Souza
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
Allen Gomes Vidal
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
Norton Guimarães
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
Ari Stopassola Junior
 

Mais procurados (20)

Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2DRYing the Skeleton: Reducing code repetition in ZF2
DRYing the Skeleton: Reducing code repetition in ZF2
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 

Semelhante a PHP 7 - A Maioridade do PHP

LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
Carlos Santos
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
tdc-globalcode
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
iMasters
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
Raphael Almeida
 
TDC 2016 - PHP7
TDC 2016 - PHP7TDC 2016 - PHP7
TDC 2016 - PHP7
Marcelo Aymone
 
Zephir
ZephirZephir
Zephir
Luiz Gavinho
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
Flávio Lisboa
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Arlindo Santos
 
PHP 5.3 - Introdução
PHP 5.3 - IntroduçãoPHP 5.3 - Introdução
PHP 5.3 - Introdução
George Mendonça
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
Agrupamento de Escolas da Batalha
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
Evaldo Junior
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
Felipe Vargas Rigo
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
Freedom DayMS
 
PHP, Mercado e Certificações
PHP, Mercado e CertificaçõesPHP, Mercado e Certificações
PHP, Mercado e Certificações
Fernando Geraldo Mantoan
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
George Mendonça
 
WP Composer
WP ComposerWP Composer
WP Composer
Eduardo Pittol
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
Johnathan Cardoso
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
andreluizlc
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
Miguel Pinto
 
Seminário: PHP
Seminário: PHPSeminário: PHP
Seminário: PHP
Ivna Valença
 

Semelhante a PHP 7 - A Maioridade do PHP (20)

LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?
 
Painel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNGPainel HHVM, Zephir, PHPNG
Painel HHVM, Zephir, PHPNG
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
 
TDC 2016 - PHP7
TDC 2016 - PHP7TDC 2016 - PHP7
TDC 2016 - PHP7
 
Zephir
ZephirZephir
Zephir
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
PHP 5.3 - Introdução
PHP 5.3 - IntroduçãoPHP 5.3 - Introdução
PHP 5.3 - Introdução
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
 
A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
PHP Presente e Futuro
PHP Presente e FuturoPHP Presente e Futuro
PHP Presente e Futuro
 
PHP, Presente e Futuro
PHP, Presente e FuturoPHP, Presente e Futuro
PHP, Presente e Futuro
 
PHP, Mercado e Certificações
PHP, Mercado e CertificaçõesPHP, Mercado e Certificações
PHP, Mercado e Certificações
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
WP Composer
WP ComposerWP Composer
WP Composer
 
Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Seminário: PHP
Seminário: PHPSeminário: PHP
Seminário: PHP
 

Mais de Daniel Archer Marques Cramer

Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
Daniel Archer Marques Cramer
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
Daniel Archer Marques Cramer
 
Over engineering
Over engineeringOver engineering
Frameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghostFrameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghost
Daniel Archer Marques Cramer
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
Daniel Archer Marques Cramer
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
Daniel Archer Marques Cramer
 
Php on the cloud
Php on the cloudPhp on the cloud
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
Daniel Archer Marques Cramer
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
Daniel Archer Marques Cramer
 

Mais de Daniel Archer Marques Cramer (9)

Filas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQFilas e mensageria com RabbitMQ
Filas e mensageria com RabbitMQ
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
Over engineering
Over engineeringOver engineering
Over engineering
 
Frameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghostFrameworks e microframeworks php - conexão kinghost
Frameworks e microframeworks php - conexão kinghost
 
Case Kinghost + Elasticsearch
Case Kinghost + ElasticsearchCase Kinghost + Elasticsearch
Case Kinghost + Elasticsearch
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Php on the cloud
Php on the cloudPhp on the cloud
Php on the cloud
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 

PHP 7 - A Maioridade do PHP

  • 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
  • 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. 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. 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!
  • 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
  • 22. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types
  • 23. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types must be of the type array
  • 24. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types
  • 25. Return Type Declarations Fonte: https://wiki.php.net/rfc/return_types must be of the type int, integer returned
  • 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
  • 28. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  • 29. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  • 30. Spaceship Operator <=> Fonte: https://wiki.php.net/rfc/combined-comparison-operator
  • 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.
  • 33. Group Use Declarations Fonte: https://wiki.php.net/rfc/group_use_declarations
  • 34. 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
  • 35. Adeus • ext/mysql • ext/ereg • $obj =& new ClassName; • PHP 4 Constructors • <script language=“PHP”></script> • <% ... %> Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  • 36. Adeus • ext/mysql • ext/ereg • $obj =& new ClassName; • PHP 4 Constructors • <script language=“PHP”></script> • <% ... %> Fonte: Slideshare – Cyrille Grandval – Nouveautes PHP 7
  • 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
  • 39. Uniform Variable Syntax Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
  • 40. Uniform Variable Syntax Fonte: https://wiki.php.net/rfc/uniform_variable_syntax
  • 41. ... pausa, chega de código.
  • 43. Resumo PHP7 • Novo Core • Novos Operadores
  • 44. Resumo PHP7 • Novo Core • Novos Operadores • Melhor desempenho
  • 45. Resumo PHP7 • Novo Core • Novos Operadores • Melhor desempenho • Preparado para futuras melhorias – Multithread?
  • 46. Resumo PHP7 • Maturidade – Core otimizado – OOP Muito bem implementada – Coerência Sintática – Preocupação com a Comunidade
  • 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!
  • 49. 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
  • 50. 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/
  • 51. PHPRS Grupo de Usuários PHP do Rio Grande Procure pelo Grupo PHPRS no Facebook http://php-rs.org/
  • 52. Certificação ZCPE Desconto de 25% Créditos: Cyrille Grandval https://goo.gl/qX38vJ
  • 53. Z-Ray Ferramenta para debug, agora não mais vinculada ao Zend Server https://goo.gl/TqKHfJ