Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Enrico Zimuel - PUG Milano meetup - Codemotion Milan 2017

294 views

Published on

Meetup del PHP User Group Milano con presentazione delle attività del gruppo e dell'associazione GrUSP per la diffusione delle buone pratiche nel mondo dello sviluppo web. Durante il meetup ci sarà anche un intervento di Enrico Zimuel sulle novità del PHP 7.1 (e 7.2), con la presentazione del suo nuovo libro "Sviluppare in PHP 7. Realizzare applicazioni web e API professionali" edito da Tecniche Nuove.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Enrico Zimuel - PUG Milano meetup - Codemotion Milan 2017

  1. 1. SVILUPPAREINPHP7: LENOVIT�DELPHP7.1E7.2 di Senior Software Engineer , una societ� Rogue Wave (USA) , Milano, 10 Novembre Enrico Zimuel Zend Technologies Codemotion 2017
  2. 2. MIPRESENTO Sviluppatore web dal 1996 Senior Software Engineer presso , una societ� Coautore di , e Speaker e relatore internazionale Research Programmer presso Co-fondatore del www.zimuel.it Zend Rogue Wave Apigility Expressive Zend Framework TEDx Universit� di Amsterdam PUG Torino
  3. 3. www.sviluppareinphp7.it
  4. 4. PHP7.1 7.1.0 (1 Dic 2016) Ultima release 7.1.11 (26 Ott 2017)
  5. 5. Versione Rilascio Supporto attivo Security x 5.5 EOL EOL EOL 5.6 28 Ago 2014 19 Gen 2017 31 Dic 2018 7.0 3 Dic 2015 3 Dic 2017 3 Dic 2018 7.1 1 Dic 2016 1 Dic 2018 1 Dic 2019
  6. 6. NOVIT�7.1
  7. 7. TIPINULLABLE Per parametri e valori di ritorno di funzioni Sintassi: aggiunta del ? prima del tipo null pu� essere passato come argomento, o restituito come valore
  8. 8. EXAMPLE function hi(?string $name): ?string { return $name ? 'Hello ' . $name : null; } echo hi(null); // returns null echo hi('Enrico'); // returns 'Hello Enrico' echo hi(); // Fatal error
  9. 9. RITORNODITIPOVOID function swap(&$left, &$right): void { if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp; } $a = 1; $b = 2; var_dump(swap($a, $b), $a, $b);
  10. 10. ARRAYDESTRUTTURATI $data = [['foo', 'bar', 'baz']]; [$a, $b] = $data[0]; var_dump($a, $b); // string(3) "foo", string(3) "bar" [$a, , $c] = $data[0]; var_dump($a, $c); // string(3) "foo", string(3) "baz" foreach ($data as [$a, $b, $c]) { var_dump($a, $b, $c); // string(3) "foo" // string(3) "bar" // string(3) "baz" }
  11. 11. CONARRAYASSOCIATIVI Chiavi speci cate in list(), o con la sintassi [] $data = ['a' => 'foo', 'b' => 'bar', 'c' => 'baz']; list('a' => $a, 'b' => $b, 'c' => $c) = $data; var_dump($a, $b, $c); // foo, bar, baz ['a' => $a, 'b' => $b, 'c' => $c] = $data; var_dump($a, $b, $c); // foo, bar, baz
  12. 12. ITERABLE Aggiunto lo pseudo-tipo iterable Accetta array o Traversable Utilizzato in parametri e ritorno di funzioni
  13. 13. ESEMPIO function foo(iterable $iterable): void { foreach ($iterable as $value) { var_dump($value); } } foo([1,2,3]); foo(new ArrayIterator([1,2,3]));
  14. 14. VISIBILIT�DICONST class ConstDemo { const CONST_A = 1; // public public const CONST_B = 2; protected const CONST_C = 3; private const CONST_D = 4; }
  15. 15. CATCHMULTIPLI try { // Some code... } catch (ExceptionA | ExceptionB $e) { // Handle exceptions A or B } catch (Exception $e) { // ... }
  16. 16. INDICINEGATIVI var_dump("abcdef"[-2]); // string(1) "e" var_dump("abcdef"[-7]); // string(0) "", PHP Notice // strpos var_dump(strpos("aabbcc", "b", -3)); // int(3) // get the last character of a string $last = substr($foo, -1); // before PHP 7.1 $last = $foo[-1];
  17. 17. OPENSSLAEAD Cifratura e autenticazione (Authenticated Encryption) Supporto modalit� GCM e CCM GCM � 3 volte pi� veloce di CCM. Pi� informazioni su Dettagli benchmark Authenticated Encryption in PHP 7.1
  18. 18. OPENSSL_ENCRYPT() $tag contiene l'hash di autenticazione string openssl_encrypt( string $data, string $method, string $password, [ int $options = 0 ], [ string $iv = "" ], [ string &$tag = NULL ], [ string $aad = "" ], [ int $tag_length = 16 ] )
  19. 19. OPENSSL_DECRYPT() string openssl_decrypt( string $data, string $method, string $password, [ int $options = 0 ], [ string $iv = "" ], [ string $tag = "" ], [ string $aad = "" ] )
  20. 20. ENCRYPTEXAMPLE Il risultato � $ciphertext . $tag $algo = 'aes-256-gcm'; $iv = random_bytes(openssl_cipher_iv_length($algo)); $key = random_bytes(32); // 256 bit $data = random_bytes(1024); // 1 Kb of random data $ciphertext = openssl_encrypt( $data, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag );
  21. 21. DECRYPTEXAMPLE $decrypt = openssl_decrypt( $ciphertext, $algo, $key, OPENSSL_RAW_DATA, $iv, $tag ); if (false === $decrypt) { throw new Exception(openssl_error_string()); } echo $data === $decrypt ? 'Ok' : 'Failure';
  22. 22. FUNZIONALIT�DEPRECATE
  23. 23. MCRYPT Utilizzare OpenSSL al suo posto
  24. 24. PHP7.2 7.2.0 (Prevista per 30 Nov 2017)
  25. 25. ALCUNENOVIT�
  26. 26. TIPOOBJECT Utilizzabile come parametro e ritorno di tipo function foo(object $obj): string { return $obj->var; } function bar(MyClass $arg): object { return $arg; }
  27. 27. OMISSIONEDELTIPO E' possibile omettere il tipo di un parametro per interfacce o classi ereditate class Foo { public function myFunction(array $myarray) { /* ... */ } } class Bar extends Foo { public function myFunction($myarray) { /* ... */ } }
  28. 28. ULTIMAVIRGOLA Lasciare la virgola nell'ultimo elemento di un lista // Arrays (already possible) $array = [1, 2, 3,]; use FooBar{ Foo, Bar, Baz, }; fooCall($arg1, $arg2, $arg3,); protected $a = 'foo', $b = 'bar', ;
  29. 29. SICUREZZA Supporto per memorizzazione sicura password , supporto crittogra a moderna Argon2 Sodium
  30. 30. GRAZIE! Contatti: enrico [at] zimuel.it Web: Twitter: Questa presentazione � rilasciata con licenza . Presentazione realizzata con www.zimuel.it @ezimuel Creative Commons Attribution-ShareAlike 3.0 Unported License reveal.js

×