migrando para php7 - novidades

Post on 12-Jan-2017

49 Views

Category:

Internet

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Gustavo Almeida

Migrando para PHP7

Prazer, meu nome é Gustavo!

Porque PHP7?

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

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.

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.

2 - Palavras Reservadas

3 - Depreciados● Construct PHP4● Tags alternativas (fica só a tradicional <?php )● extensão mysql,mssql● ereg

4 - Operadores ● …● ??● \u● <=>

4 - Splat (...) - esse é do 5.6, ok?

Média aritmética numa só linha !!!

4 - Null Coalescing (??)

se o primeiro for falso, então o resultado será o segundo

5 - Unicode escape syntax (\u)

Até na linha de comando aparecem as figuras. Adeus icones com imagens

6 - Spaceshift (<=>) - quando usar ?

ORDENAÇÃO

7 - define e session_start aceitam arrays

session_start([ ]);

ex. PDO 1 linha equivale a 4

8 - intdiv

9 - Agrupamento de use

vários use em uma única linha

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.

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

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;

}

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.

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.

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)){#....

}

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;

PHP 7.1● mais um tipo - void

function naoRetornaValor(string $email, string $msg): void{mail($email, $msg);

}

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;//

}

PHP 7.1● agrupamento de exceções

try{$gateway->send($cartao,$data,$cvv);

} catch(DinheiroInsuficienteException |ClienteNegativadoException |ProdutoEmFaltaException |NaoToAfimDeVenderException $e)

{$erro = “Desculpa , erro no pagto”;

}

github: lga37slideshare: lga33br.linkedin.com/in/lga37

top related