O slideshow foi denunciado.

Php7 e além

413 visualizações

Publicada em

Apresento a mais nova versão do PHP, navegando desde a criação do PHP, passando pelas versões lançadas ao longo de 20 anos da linguagem, então entrando a fundo na versão 7, suas funcionalidades mais notáveis, as mudanças, as dificuldades para migrar e o que virá no futuro da linguagem.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Php7 e além

  1. 1. PHP7 e além Maturidade, Comunidade e Visibilidade Anderson Casimiro @duodraco
  2. 2. Agenda História Chegamos ao Se7e… Principais funcionalidades Ecossistema O que vem por aí?
  3. 3. 1995 ~ 2004 PHP, FI, 3, 4 Bad Times...
  4. 4. 5 2004
  5. 5. 5 OOP Melhorada Standard PHP Library PDO, DateTime … Namespaces Anonymous Functions Traits Generators (yield) Yearly Releases Performance
  6. 6. Chegamos ao Se7e... HipHop Especificação do PHP HHVM Hack php-src/tree/phpng
  7. 7. e o PHP 6?
  8. 8. O que é o ?
  9. 9. Performance
  10. 10. source: http://www.zend.com/en/resources/php7_infographic
  11. 11. source: http://www.zend.com/en/resources/php7_infographic
  12. 12. Mudanças na Sintaxe
  13. 13. 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';
  14. 14. Null coalescing Spaceship Group use Unicode escaping echo 1 <=> 1; // 0 echo 2 <=> 1; // 1 echo 1 <=> 2; // -1 echo 'scala' <=> 'php'; // -1 echo 'php' <=> 'javascript'; // 1 echo 'A' <=> 'A'; // 0 $today = new DateTime; $someDay = new DateTime('1981-06-15'); echo $today <=> $someDay; // 1 //Alguém aqui lembrou da função usort()?
  15. 15. Null coalescing Spaceship Group use Unicode escaping use PHPSPTalksEvinoPeople{ Attendee, Speaker, Staff as PeopleToThankFor };
  16. 16. 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}" ❤
  17. 17. Error Handling
  18. 18. <<interface>> Throwable Error Exception AssertionError TypeError RuntimeException ErrorException ArtithmeticError DivisionByZeroError ParseError
  19. 19. try{ $object = new Test(); } catch(Exception $e){ // Exception logic } catch(Error $err) { // Error logic } catch(Throwable $t) { // Error or Exception logic }
  20. 20. Anonymous Classes
  21. 21. 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; } });
  22. 22. Scalar Type Hinting + Return Type Declaration
  23. 23. function buildUser(string $name, int ?$age): User { $user = new User(); $user->setName($name); $user->setAge($age ?? 18); return $user; } declare(strict_types = 1);
  24. 24. $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();
  25. 25. Iterable
  26. 26. function plotarResultado(Iterable $colecao = []){ foreach($colecao as $item){ echo (string) $item; } } $array = [/* ... */]; $statement = $pdo->execute(); plotarResultado($array); plotarResultado($statement);
  27. 27. Mais sobre o 7
  28. 28. Árvore Abstrata de Sintaxe (AST) Suporte completo a 64 bits Gerenciamento de memória Thread safety sem perdas Estruturas internas de dados otimizadas
  29. 29. Closure::call() unserialize() filtrado IntlChar Expectations Delegação de Generators + expressions de retorno CSPRNG intdiv() Session options
  30. 30. 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
  31. 31. Alternative tags Old style constructors Uniform variable syntax Operators + indirect access Server APIs (SAPI) Extensions ereg, mssql, mysql, sybase_ct Quebras de compatibilidade 5 -> 7 bit.ly/php5to7
  32. 32. What’s Next...
  33. 33. 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)
  34. 34. Criptografia Moderna (libSodium)
  35. 35. Ecossistema PHP
  36. 36. Servidor Web
  37. 37. Aplicações
  38. 38. Empresas
  39. 39. O que vem por aí?
  40. 40. Blood has the same color for everyone
  41. 41. duodraco@gmail.com duodra.co slideshare.net/duodraco #somostodosphp #comunidadefunciona #manadapoderosa

×