Top 10 Features do PHP Moderno

Top 10 Features do PHP Moderno

Nesta palestra Galvão apresenta as 10 features mais importantes (na sua opinião) do PHP moderno.

1ccd06fade85096cdbe2ac397ace9202?s=128

Er Galvão Abbott

May 19, 2017
Tweet

Transcript

  1. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 1 / 40 Top 10 Features do PHP Moderno www.galvao.eti.br TOP 10 Features do php Moderno
  2. Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP Diretor

    da PHP Conference Brasil Contribui para a tradução da documentação oficial Atua como Zend Framework Evangelist para o ZTeam, da Zend. Professor Convidado de Pós-Graduação, PR e SC. 22+ anos desenvolvendo sistemas e aplicações com interface web 17+ destes com PHP 9+ com Zend Framework Palestrante em eventos nacionais e internacionais Instrutor de cursos presenciais e a distância Fundador* e membro do GU PHPRS Site: https://www.galvao.eti.br/ http://people.php.net/galvao Twitter: @galvao Facebook: https://www.facebook.com/galvao.eti.br/ Slides e Documentos: http://slideshare.net/ergalvao https://speakerdeck.com/galvao Github: http://github.com/galvao Posts: https://medium.com/@galvao Quem?! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/31/17 - 2 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno
  3. Objetivo CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 3 / 40 www.galvao.eti.br → Atualizar quem já trabalha com a linguagem; → Eliminar um pouco do estigma que a linguagem possui; → Demonstrar o poder que a linguagem possui atualmente; Top 10 Features do PHP Moderno
  4. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 4 / 40 www.galvao.eti.br 1. Namespaces PHP 5.3 ≃ 8 anos Top 10 Features do PHP Moderno
  5. Namespaces CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 5 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php namespace MyProject; class User { ... <?php use MyProject\User;
  6. Namespaces CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 6 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno código função objeto namespace
  7. Namespaces CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 7 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno namespaces autoloader composer packagist { "require": { "guzzlehttp/guzzle": "^6.2", "phpmailer/phpmailer": "^5.2" } }
  8. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 8 / 40 www.galvao.eti.br 2. STH / RTD / Strict Types PHP 7.0 / 7.1 / ... ≃ 1.5 ano Top 10 Features do PHP Moderno
  9. STH / RTD / Strict Types CC Attribution-ShareAlike 3.0 Unported

    License by Er Galvão Abbott - 5/31/17 - 9 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php declare(strict_types = 1); function soma(int $x, float $y): float { return $x + $y; } $x = soma(1, 2.5); $x = soma(1.2, 2.7); $x = soma(‘1’, 12); $x = soma(2, 8); x x
  10. void* > Strict Types CC Attribution-ShareAlike 3.0 Unported License by

    Er Galvão Abbott - 5/31/17 - 10 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php function soma(int $x, float $y): void { return $x + $y; } x <?php function soma(int &$x, int $y): void { $x = $x + $y; } $x = 0; soma($x, 2); * PHP 7.1
  11. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 11 / 40 www.galvao.eti.br 3. Funções Anônimas Top 10 Features do PHP Moderno PHP 5.3 ≃ 8 anos
  12. Funções Anônimas CC Attribution-ShareAlike 3.0 Unported License by Er Galvão

    Abbott - 5/31/17 - 12 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php function soma(Closure $x, int $y): float { return $x() + $y; } <?php echo soma(function ():int { return 2; }, 8);
  13. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 13 / 40 www.galvao.eti.br 4. Hash de senhas Top 10 Features do PHP Moderno PHP 5.5 ≃ 4 anos
  14. password_hash CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 14 / 40 www.galvao.eti.br Os 4 Pilares de Segurança de uma Aplicação $senha = password_hash($plain, PASSWORD_ DEFAULT BCRYPT [, $options]); hash_resultante dado original algo salt opções
  15. password_hash CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 5/31/17 - 15 / 40 www.galvao.eti.br Os 4 Pilares de Segurança de uma Aplicação password_hash password_verify password_needs_rehash
  16. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 16 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php $crypto = [ 'algo' => PASSWORD_DEFAULT, 'options' => [ 'cost' => 10, ], ]; $inputPass = 'mypass'; $pass = password_hash($inputPass, $crypto['algo'], $crypto['options']); if (password_verify($inputPass, $pass)) { $crypto['options']['cost'] = 12; if (password_needs_rehash($inputPass, $crypto['algo'], $crypto['options'])) { $newPass = password_hash($inputPass, $crypto['algo'], $crypto['options']); } } password_hash
  17. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 17 / 40 www.galvao.eti.br 5. Filtragem e Validação Top 10 Features do PHP Moderno PHP 5.2 ≃ 11 anos
  18. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 18 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Filtragem e Validação filter_var($dado, FILTER_ SANITIZE_ VALIDATE_ EMAIL ENCODED MAGIC_QUOTES NUMBER_FLOAT NUMBER_INT SPECIAL_CHARS FULL_SPECIAL_CHARS STRING STRIPPED URL UNSAFE_RAW BOOLEAN EMAIL FLOAT INT IP MAC REGEXP URL ); CALLBACK
  19. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 19 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php $telefone = filter_var($_POST['telefone'], FILTER_CALLBACK, [ 'options' => function ($dado) { return preg_replace('/[^\d|\-|\.]/', '', $dado); }] ); if (!filter_var($telefone, FILTER_VALIDATE_REGEXP, [ 'options' => [ 'regexp' => '/[\d|\-|\.]/' ] ])) { die('Telefone inválido'); } Filtragem e Validação
  20. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 20 / 40 www.galvao.eti.br 6. Criptografia Top 10 Features do PHP Moderno PHP 5 ≃ 12 anos
  21. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 21 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Criptografia openssl_ encrypt decrypt ($dado, method, key, options, IV); cifra + modo
  22. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 22 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php define('CRYPTO', [ 'CIPHER' => 'aes-256-ctr', 'KEY' => '46f9cae861ec7c5474102c0a901b7a44', 'IV' => '35e59367dc417e703757341520d1486d', ]); $crypt = openssl_encrypt($data, CRYPTO['CIPHER'], CRYPTO['KEY'], 0, CRYPTO['IV'] ); $decrypt = openssl_decrypt($crypt, CRYPTO['CIPHER'], CRYPTO['KEY'], 0, CRYPTO['IV'] ); Criptografia
  23. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 23 / 40 www.galvao.eti.br 7. CSPRNG Top 10 Features do PHP Moderno PHP 4/7* ≃17 anos / ≃ 1.5 ano
  24. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 24 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php $randomInt = random_int(0, 2); $randomStr = base64_encode(random_bytes(10)); CSPRNG <?php // PHP >= 4 $randomInt = mt_rand(0, 2); // $randomStr = Alguma implementação customizada
  25. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 25 / 40 www.galvao.eti.br 8. Traits Top 10 Features do PHP Moderno PHP 5.4 ≃ 5 anos
  26. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 26 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php namespace MyProject\Trait; trait Singleton { private static $instance; public static function getInstance() { $class = __CLASS__; self::$instance = self::$instance ?? new $class; return self::$instance; } } Traits
  27. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 27 / 40 www.galvao.eti.br 9. Generators Top 10 Features do PHP Moderno PHP 5.5 ≃ 4 anos
  28. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 28 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php $begin = new DateTime(); $array = []; foreach (range(0, 1000000) as $int) { $array[] = $int; } $end = new DateTime(); $interval = $begin->diff($end); echo 'O array $array contém ' . number_format(count($array)) . “ elementos.\n”; echo $interval->format('%S segundos.') . “\n”; Generators O array $array contém 1,000,001 elementos. 00 segundos.
  29. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 29 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php $begin = new DateTime(); $array = []; foreach (range(0, 10000000) as $int) { $array[] = $int; } $end = new DateTime(); $interval = $begin->diff($end); echo 'O array $array contém ' . number_format(count($array)) . “ elementos.\n”; echo $interval->format('%S segundos.') . “\n”; Generators Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 536870920 bytes) in /var/www/.../g1.php on line 6 536 Mb – Memória excedida em 402 Mb
  30. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 30 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php function xrange($start, $limit) { for ($i = $start; $i <= $limit; $i++) { yield $i; } } $begin = new DateTime(); foreach (xrange(0, 10000000) as $int) { $array[] = $int; } $end = new DateTime(); $interval = $begin->diff($end); echo 'O array $array contém ' . number_format(count($array)) . “ elementos.\n”; echo $interval->format('%S segundos.') . “\n”; Generators Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 134217736 bytes) in /var/www/.../g1.php on line 6 134 Mb : Memória excedida em 8 bytes
  31. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 31 / 40 www.galvao.eti.br 10. Abstração de BD Top 10 Features do PHP Moderno PHP 5* ≃ 12 anos
  32. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 32 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php define('DB', [ 'DRIVER' => 'mysql', 'HOST' => 'localhost', 'PORT' => 3306, 'NAME' => 'teste', 'USER' => 'aluno', 'PASS' => 'aluno', ]); $dsn = DB['DRIVER'] . ':host=' . DB['HOST'] . ';port=' . DB['PORT'] . ';dbname=' . DB['NAME']; $dbh = new PDO($dsn, DB['USER'], DB['PASS']); $sql = "INSERT into foo (bar) VALUES ('baz')"; $dbh->exec($sql); $dbh = NULL; PDO
  33. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 33 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno <?php define('DB', [ 'DRIVER' => 'pgsql', 'HOST' => 'localhost', 'PORT' => 5432, 'NAME' => 'teste', 'USER' => 'aluno', 'PASS' => 'aluno', ]); $dsn = DB['DRIVER'] . ':host=' . DB['HOST'] . ';port=' . DB['PORT'] . ';dbname=' . DB['NAME'] . ‘;user=’ . DB[‘USER’] . ‘;password=’ . DB[‘PASS’]; $dbh = new PDO($dsn); $sql = "INSERT into foo (bar) VALUES ('baz')"; $dbh->exec($sql); $dbh = NULL; PDO
  34. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 34 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno MS SQL Server Sybase Firebird IBM DB2 IBM Informix Oracle ODBC SQLite ... PDO++
  35. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 35 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Concluindo...
  36. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 36 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Concluindo… R
  37. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 37 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Concluindo… RT
  38. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 38 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Concluindo… RTF
  39. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    5/31/17 - 39 / 40 www.galvao.eti.br Top 10 Features do PHP Moderno Concluindo… RTFM!!! Concluindo… RTFM!!! http://php.net/manual/en/index.php Concluindo… RTFM!!! Concluindo… RTFM!!!
  40. Muito obrigado! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão

    Abbott - 5/31/17 - 40 / 40 www.galvao.eti.br ? Dúvidas? ↓ Críticas? ↑ Elogios?! Top 10 Features do PHP Moderno