SlideShare a Scribd company logo
1 of 71
Download to read offline
O futuro do Elephante:
As promessas do PHP para 2019
Bom dia!
Trilha PHP do TDC
Florianópolis 2019
Photo by karl chor on Unsplash
@cassiosantos
GitHub / Facebook / Twitter / LastFm
cassiodossantos
LinkedIn
Slides no
SlideShare
Crédito: Nikita Popov
O que você
quer
O que você
tem
Diminuir o nível de indireção
( https://www.youtube.com/watch?v=M8Ktic5sPlo )
( https://it-sziget.hu/php-jelentosebb-valtozasai-napjainkig-kezdetektol-a-trait-ekig )
HTML antes do
HTML5
HTML e fluxos
lógicos do PHP no
mesmo arquivo
Faltou um CSS
misturado!
Configs iguais em
vários arquivos
atualizadas na base
do Replace All
Pode aparecer a
senha para o
usuário final
dependendo da
config.
Quando dá erro
não fecha as tags
HTML.
Avisando o usuário.
Podia ter colocado
um <BR>
Magic Quotes.
Saudades!
Ainda bem que foi
cuidadoso!
ASP tags e faltou
ponto-e-vírgula
Olha só que curioso…
PHP 4.3
A nova versão 2.5 do Wordpress lançada em 29 de março de
2008 mudou os requisitos mínimos da versão 4.2 para 4.3 do
PHP.
Último patch da versão 4.3 do PHP lançado em 31 de março
de 2005.
PHP 4.3
A nova versão 2.5 do Wordpress lançada em 29 de março de
2008 mudou os requisitos mínimos da versão 4.2 para 4.3 do
PHP.
Último patch da versão 4.3 do PHP lançado em 31 de março
de 2005.
11 anos
14 anos
( https://codex.wordpress.org/Version_2.5 )
( https://www.php.net/releases#4.3.11 )
Como o PHP
evolui?
Pessoas
Internals
Mailing List
A medium volume list for those
who want to help out with the
development of PHP
( https://www.php.net/mailing-lists.php#internals )
RFCs
( https://wiki.php.net/rfc/template )
RFC
● Introdução
● Proposta
● Quebras de
compatibilidade com as
versões anteriores
● Limitações
● Versão alvo
● Impacto
● Pull Request
● Comparações /
Referências
● O que mais o autor achar
válido
Java?
Python?
Rust?
Go?
Java
JSR (Java
Specification
Requests)
JSR 335:
Lambda Expressions for the
Java™ Programming Language
https://jcp.org/en/jsr/detail?id=335
Python
PEP (Python
Enhancement
Proposals)
PEP 8
( https://www.python.org/dev/peps/pep-0008/ )
Não confundir com
as PSRs
PHP Standards Recommendations
( https://www.php-fig.org/psr/ )
Rust
( https://github.com/rust-lang/rfcs )
RFC
(Request For
Comments)
Go
?
(Google)
Se alguém souber
avisa no final da
apresentação
E quais foram as
RFCs
aprovadas?
● Governança
● PHP 7.4
● PHP 8.0
Governança
Abolish Narrow Margins
Proposta para abolir votações com o
critério “50% + 1 voto”.
( Criado em 17 de novembro de 2016, votação encerrada em 22 de fevereiro de
2019. )
https://wiki.php.net/rfc/abolish-narrow-margins
Abolish Short Votes
Proposta para abolir períodos de votação
menores do que duas semanas.
(Criado em 21 de março de 2019, votações terminaram em: 22 de abril de 2019)
https://wiki.php.net/rfc/abolish-short-votes
PHP 7.4
( https://www.php.net/supported-versions.php )
● A extensão permite o acesso a
sistemas de banco de dados
baseados no InterBase e
sistemas baseados no Firebird.
● Existe uma extensão PDO para
acessar os mesmos sistemas de
banco de dados com um
back-end PDO, no entanto, para
esta RFC, apenas a extensão
ext/interbase está em questão.
Remover o InterBase e WDDX do Core
● Deprecate and remove
ext/interbase
● Unbundle ext/wddx
● A extensão InterBase para PHP
(ext/interbase) é uma das mais
antigas extensões de banco de
dados que atualmente residem
no Core.
● weakrefs
● Referências fracas permitem ao
programador manter uma
referência a um objeto que não
impede que o objeto seja
destruído;
Referências Fracas
● Eles são úteis para implementar
estruturas semelhantes a cache.
Eles são atualmente suportados
no PHP por extensão.
Propriedades Tipadas 2.0
● Typed Properties 2.0
Com a introdução de tipos
escalares e tipos de retorno, o
PHP 7 aumentou muito o poder
do sistema de tipos do PHP.
● No entanto, não era possível
declarar os tipos de
propriedades de classe, forçando
os desenvolvedores a usar os
métodos getter e setter para
impor contratos de tipo.
● Isso requer um boilerplate
desnecessário, tornando o uso
menos ergonômico e
prejudicando o desempenho.
● Esta RFC resolve esse problema
introduzindo suporte para
declarações de tipo de
propriedade.
Olha, mãe. Agora
posso ser público!!!
Olha, mãe. Agora
posso ser público!!!
Só se não tiver
necessidade de
melhor validação.
bool, int, float, string, array, object
iterable
self, parent
any class or interface name
?type // where "type" may be any of the above
Implementadas
● Null Coalesce Equal Operator
● Facilitar atribuições de valores
padrão.
??=
// The following lines are doing the same
$this->request->data['comments']['user_id'] =
$this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names,
// the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';
Pré-carregamento sem sobrecarga
● Preloading
● Pré-carregar funções e classes
do PHP uma vez e usá-las no
contexto de qualquer solicitação
futura sem sobrecarga.
● Nova diretiva do php.ini
“opcache.preload”
ext/hash sempre disponível
● Always available hash extension
● Propõe manter a extensão hash
sempre disponível no PHP assim
como as extensões `date`, `spl` e
`pcre`.
● Password Hash Registry
● Torna os mecanismos usado por
password_hash/verify/etc…
extensível por outros módulos
Mudanças no password_hash
mb_str_split()
● Split multibyte string
Reflection para Referências
● Reflection for references
● Bibliotecas especializadas que
executam operações como
dumping, clonagem ou
comparação exigem a
capacidade de raciocinar sobre
referências ao PHP.
● Atualmente, o PHP não fornece
APIs para esse propósito,
forçando as bibliotecas a usar
formas indiretas de detectar
referências e igualdades de
referência.
Nova serialização personalizada
● New custom object serialization
mechanism
● Introduz novo mecanismo de
serialização de objeto
personalizado para substituir
Serializable
public function
__serialize(): array;
public function
__unserialize(array $data):
void;
Covariant Returns and Contravariant Parameters
interface A {
function m(B $z);
}
interface B extends A {
// permitted
function m($z): A;
}
interface X {
function m(Y $z): X;
}
interface Y extends X {
// not permitted but type-safe
function m(X $z): Y;
}
https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters
IDE
PhpStorm
PHP 8.0
Acho que tá mais
pra 2020!
Consistent type errors for internal
functions
Um TypeError será lançado em vez de um Warning se os parâmetros
digitados incorretamente forem passados para uma função, que é uma
alteração incompatível com versões anteriores.
Hoje: método do usuário TypeError e funções internas por padrão lançam
um Warning e retornam null.
https://wiki.php.net/rfc/consistent_type_errors
Arrays starting with a negative index
<?php
$a = array_fill(-2, 3, true);
$b = [-2 => true, true, true];
$c = ["string" => true, -2 => true, true, true];
unset($c["string"]);
$d[-2] = true;
$d[] = true;
$d[] = true;
Arrays starting with a negative index
<?php
array(3) {
[-2]=> bool(true)
[0]=> bool(true)
[1]=> bool(true)
}
Atualmente
https://wiki.php.net/rfc/negative_array_index
Arrays starting with a negative index
<?php
array(3) {
[-2]=> bool(true)
[-1]=> bool(true)
[0]=> bool(true)
}
Proposto
https://wiki.php.net/rfc/negative_array_index
JIT
1. Não dá mais para aumentar a performance
sem usar JIT
2. Em cenários não relacionados com a web o
ganho de memória pode ser útil
3. Com o JIT poderemos desenvolver extensões
usando PHP em vez de C
JIT
“it currently doesn't seem to significantly improve real-life apps
like WordPress (with opcache.jit=1235 326 req/sec vs 315
req/sec)”
https://wiki.php.net/rfc/jit
Espero ter contribuído com
alguma coisa de volta para a
comunidade hoje!
Obrigado.

More Related Content

What's hot

Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
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 web2pyRelsi Maron
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberEr Galvão Abbott
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Er Galvão Abbott
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Maellson Marques
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPGedvan Dias
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE PoliglotaPhil Calçado
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasVitor Mattos
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 

What's hot (20)

Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
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
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Php7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saberPhp7 esta chgando! O que você precisa saber
Php7 esta chgando! O que você precisa saber
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHP
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota
 
BDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemasBDD: Torne viva a documentação de seus sistemas
BDD: Torne viva a documentação de seus sistemas
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 

Similar to O futuro do PHP: as promessas para 2019

Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPRamon Ribeiro Rabello
 
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Flávio Lisboa
 
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 - PHPCarlos Santos
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptRaphael Donaire Albino
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 

Similar to O futuro do PHP: as promessas para 2019 (20)

Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Javascript
JavascriptJavascript
Javascript
 
Módulo de php
Módulo de phpMódulo de php
Módulo de php
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Evolucao php2
Evolucao php2Evolucao php2
Evolucao php2
 
php4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHPphp4android: desenvolva aplicações android em PHP
php4android: desenvolva aplicações android em PHP
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
Mapeamento Objeto Relacional com PHP - PHP Conference Brasil 2010
 
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
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
CakePHP
CakePHPCakePHP
CakePHP
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 

O futuro do PHP: as promessas para 2019