Palestra na PHP Conference 2016 onde mostro novidades do PHP7 e PHP7.1 mostrando dicas que podem ser aplicadas imediatamente, entre nessa onda do PHP 7.
4. Se por acaso não te interessa velocidade ...
● Tipagem : Indução de tipos primitivos e tipos de retorno.
● Novos operadores.
● Erros e exceções.
Para instalar o PHP7 via apt-get :
● sudo add-apt-repository ppa:ondrej/php
● sudo apt-get update
● sudo apt-get install php7.0
● sudo apt-get install php7.0-mysql
5. 1 - Tipagem - function f(int $a, float $b)
O default é sem
strict_types
Conversão Implicita
de tipos do PHP
está valendo.
Colocando a declaração com
declare, somente o tipo
especificado é permitido.
6. 1 - Tipagem - function f(int $a): string
Sem strict_types ele faz
a conversão implicita.
De int para string: ok
De int para array: erro
Neste caso como
declaramos strict_types ele
só admite se for do tipo
especificado.
17. 10 - Erros fatais não travam o PHP7
● Erros Fatais travam o PHP5.
● No PHP7 Erros Fatais agora são Exceções
● Agora isso mudou - Pode-se estender a Interface Throwable.
● set_error_handler() e set_exception_handler() são chamadas caso ninguém trate o erro.
18. try{
#Cod pode lançar Exception/Error
}catch(Throwable $t){
#executado no PHP7
}catch(Exception $e){
#executado no PHP5
}finally{
#executado de qq maneira
}
10 - Erros fatais não travam o PHP7
19. 10 - Extendendo a Interface Throwable
interface MyPackageThrowable extends Throwable {}
class MyPackageException extends Exception implements MyPackageThrowable {}
function add(int $num1, int $num2) {
if($num1 < 0){
throw new MyPackageException(Num 1 < 0');
}
return $num1 + $num2;
}
20. Quebras de compatibilidade
expressão PHP5 PHP7
$$foo[‘bar’][‘baz’] ${$foo[‘bar’][‘baz’]} ($$foo)[‘bar’][‘baz’]
$foo->$bar[‘baz’] $foo->{$bar[‘baz’]} ($foo->$bar)[‘baz’]
$foo->$bar[‘baz’]() $foo->{$bar[‘baz’]}() ($foo->$bar)[‘baz’]()
Foo::$bar[‘baz’]() Foo::{$bar[‘baz’]}() (Foo::$bar)[‘baz’]()
Outras maneiras de acessar variáveis, propriedades e métodos.
21. Mudanças internas
● Árvore de sintaxe abstrata
● suporte 64 bits (LFS, strings > 2e31, inteiros de 64 bits).
● gerenciamento de memória.
● implementação de segurança sobre threads.
● estrutura de dados.
22. PHP 7.1 - mais novidades
● Tipos Nulos
function getName() : ? string {
return $this->name;
}
function getName(? User $user) : string {
return $user->name;
}
if(is_null($param)){
#....
}