migrando para php7 - novidades

28
Gustavo Almeida Migrando para PHP7

Upload: luis-gustavo-almeida

Post on 12-Jan-2017

49 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Migrando para PHP7 - Novidades

Gustavo Almeida

Migrando para PHP7

Page 2: Migrando para PHP7 - Novidades

Prazer, meu nome é Gustavo!

Page 3: Migrando para PHP7 - Novidades

Porque PHP7?

Page 4: Migrando para PHP7 - Novidades

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

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

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

2 - Palavras Reservadas

Page 8: Migrando para PHP7 - Novidades

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

Page 9: Migrando para PHP7 - Novidades

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

Page 10: Migrando para PHP7 - Novidades

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

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

Page 11: Migrando para PHP7 - Novidades

4 - Null Coalescing (??)

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

Page 12: Migrando para PHP7 - Novidades

5 - Unicode escape syntax (\u)

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

Page 13: Migrando para PHP7 - Novidades

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

ORDENAÇÃO

Page 14: Migrando para PHP7 - Novidades

7 - define e session_start aceitam arrays

session_start([ ]);

ex. PDO 1 linha equivale a 4

Page 15: Migrando para PHP7 - Novidades

8 - intdiv

Page 16: Migrando para PHP7 - Novidades

9 - Agrupamento de use

vários use em uma única linha

Page 17: Migrando para PHP7 - Novidades

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

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

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

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

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

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

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

PHP 7.1● mais um tipo - void

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

}

Page 25: Migrando para PHP7 - Novidades

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

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
Page 28: Migrando para PHP7 - Novidades

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