Php7 e além

Post on 22-Jan-2018

435 views 0 download

Transcript of Php7 e além

PHP7 e alémMaturidade, Comunidade e Visibilidade

Anderson Casimiro@duodraco

Agenda

História

Chegamos ao Se7e…

Principais funcionalidades

Ecossistema

O que vem por aí?

1995 ~ 2004

PHP, FI, 3, 4

Bad Times...

5 2004

5

OOP Melhorada

Standard PHP Library

PDO, DateTime …

Namespaces

Anonymous Functions

Traits

Generators (yield)

Yearly Releases

Performance

Chegamos ao Se7e...

HipHop

Especificação do PHP

HHVM

Hack

php-src/tree/phpng

e o PHP 6?

O que é o ?

Performance

source: http://www.zend.com/en/resources/php7_infographic

source: http://www.zend.com/en/resources/php7_infographic

source: http://www.zend.com/en/resources/php7_infographic

Mudanças na Sintaxe

Null coalescing

Spaceship

Group use

Unicode escaping

/* PHP5 */$route = $_SERVER['request_uri'] ?:'/index';

/* não está bom… vamos tentar de novo */$route = isset($_SERVER['request_uri'])? $_SERVER['request_uri'] : '/index';

/* PHP7 */$route = $_SERVER['request_uri'] ?? '/index';

Null coalescing

Spaceship

Group use

Unicode escaping

echo 1 <=> 1; // 0echo 2 <=> 1; // 1echo 1 <=> 2; // -1

echo 'scala' <=> 'php'; // -1echo 'php' <=> 'javascript'; // 1echo 'A' <=> 'A'; // 0

$today = new DateTime;$someDay = new DateTime('1981-06-15');echo $today <=> $someDay; // 1

//Alguém aqui lembrou da função usort()?

Null coalescing

Spaceship

Group use

Unicode escaping

use \PHPSP\Talks\Evino\People\{

Attendee,

Speaker,

Staff as PeopleToThankFor

};

Null coalescing

Spaceship

Group use

Unicode escaping

html_entity_decode('&#x10084', 0, 'UTF-8');

mb_convert_encoding('&#x10084', 'UTF-8', 'HTML-ENTITIES');

json_decode('"\\u2764"');

"\u{2764}"

Error Handling

<<interface>>Throwable

Error Exception

AssertionError

TypeErrorRuntimeException

ErrorException

ArtithmeticError

DivisionByZeroError

ParseError

try{ $object = new Test();} catch(\Exception $e){ // Exception logic} catch(\Error $err) { // Error logic} catch(\Throwable $t) { // Error or Exception logic}

Anonymous Classes

interface Logger { public function log(string $msg);}

class Application { private $logger; public function setLogger(Logger $logger) { $this->logger = $logger; }}

$app = new Application;$app->setLogger(new class implements Logger { public function log(string $msg) { echo $msg; }});

Scalar Type Hinting + Return Type Declaration

function buildUser(string $name, int ?$age): User { $user = new User(); $user->setName($name); $user->setAge($age ?? 18); return $user; }

declare(strict_types = 1);

$zoeira = “”;

$apelido = function () use (&$zoeira): void{ $zoeirasDisponiveis = [

'Baladinha top','PHP é fraco, não é tipado','PHP moleque, pé no chão'

];$qual = rand(0, 3);

$zoeira = $zoeirasDisponiveis[$qual];}

echo $zoeira();

Iterable

function plotarResultado(Iterable $colecao = []){ foreach($colecao as $item){ echo (string) $item; }}

$array = [/* ... */];

$statement = $pdo->execute();

plotarResultado($array);

plotarResultado($statement);

Mais sobre o 7

Árvore Abstrata de Sintaxe (AST)

Suporte completo a 64 bits

Gerenciamento de memória

Thread safety sem perdas

Estruturas internas de dados otimizadas

Closure::call()

unserialize() filtrado

IntlChar

Expectations

Delegação de Generators + expressions de retorno

CSPRNG

intdiv()

Session options

Especificar chaves na função list()

Modificadores de visibilidade de constantes de Classe

Catch para multiplos Throwables

Melhorias no Curl (HTTP/2 Server Push)

Criar Closure de um Callable

Melhorias no PCNTL

Alternative tags

Old style constructors

Uniform variable syntaxOperators + indirect access

Server APIs (SAPI)

Extensionsereg, mssql, mysql, sybase_ct

Quebras de compatibilidade 5 -> 7

bit.ly/php5to7

What’s Next...

Descontinuações a partir do 7.2

bit.ly/depr-php-7-2

__autoload

$php_errormsg

create_function()

mbstring.func_overload

(unset) $var

parse_str($arg1)

gmp_random()

each()

assert(“arg”)

set_error_handler(..., $errcontext)

Criptografia Moderna (libSodium)

Ecossistema PHP

Servidor Web

Aplicações

Empresas

O que vem por aí?

Blood has the same color for everyone

duodraco@gmail.comduodra.co

slideshare.net/duodraco

#somostodosphp #comunidadefunciona #manadapoderosa