migrando para php7 - novidades
TRANSCRIPT
![Page 1: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/1.jpg)
Gustavo Almeida
Migrando para PHP7
![Page 2: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/2.jpg)
Prazer, meu nome é Gustavo!
![Page 3: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/3.jpg)
Porque PHP7?
![Page 4: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/4.jpg)
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
![Page 5: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/5.jpg)
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.
![Page 6: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/6.jpg)
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.
![Page 7: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/7.jpg)
2 - Palavras Reservadas
![Page 8: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/8.jpg)
3 - Depreciados● Construct PHP4● Tags alternativas (fica só a tradicional <?php )● extensão mysql,mssql● ereg
![Page 9: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/9.jpg)
4 - Operadores ● …● ??● \u● <=>
![Page 10: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/10.jpg)
4 - Splat (...) - esse é do 5.6, ok?
Média aritmética numa só linha !!!
![Page 11: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/11.jpg)
4 - Null Coalescing (??)
se o primeiro for falso, então o resultado será o segundo
![Page 12: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/12.jpg)
5 - Unicode escape syntax (\u)
Até na linha de comando aparecem as figuras. Adeus icones com imagens
![Page 13: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/13.jpg)
6 - Spaceshift (<=>) - quando usar ?
ORDENAÇÃO
![Page 14: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/14.jpg)
7 - define e session_start aceitam arrays
session_start([ ]);
ex. PDO 1 linha equivale a 4
![Page 15: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/15.jpg)
8 - intdiv
![Page 16: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/16.jpg)
9 - Agrupamento de use
vários use em uma única linha
![Page 17: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/17.jpg)
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.
![Page 18: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/18.jpg)
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
![Page 19: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/19.jpg)
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;
}
![Page 20: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/20.jpg)
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.
![Page 21: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/21.jpg)
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.
![Page 22: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/22.jpg)
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)){#....
}
![Page 23: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/23.jpg)
PHP 7.1● Desconstrução do array - parecido com list()
$response = [‘nome’=>’PHP-Conf’ , ‘ano’=>2016, ‘local’=>’SP’];
[‘nome’=>$nome , ‘ano’=>$ano, ‘local’=>’$local] = $response;
echo $nome;
![Page 24: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/24.jpg)
PHP 7.1● mais um tipo - void
function naoRetornaValor(string $email, string $msg): void{mail($email, $msg);
}
![Page 25: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/25.jpg)
PHP 7.1● visibilidade de constantes (public, protected, private)
Class Imposto{protected const TAXA=10;//
}Class ImpostoSP extends Imposto{
private const TAXA=20;//
}Class ImpostoRJ extends Imposto{
private const TAXA=30;//
}
![Page 26: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/26.jpg)
PHP 7.1● agrupamento de exceções
try{$gateway->send($cartao,$data,$cvv);
} catch(DinheiroInsuficienteException |ClienteNegativadoException |ProdutoEmFaltaException |NaoToAfimDeVenderException $e)
{$erro = “Desculpa , erro no pagto”;
}
![Page 27: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/27.jpg)
![Page 28: Migrando para PHP7 - Novidades](https://reader030.vdocuments.site/reader030/viewer/2022020301/5877b0401a28ab2c668b48ef/html5/thumbnails/28.jpg)
github: lga37slideshare: lga33br.linkedin.com/in/lga37