Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modernisez votre code PHP

Modernisez votre code PHP

Depuis quelques années, beaucoup de nouvelles fonctionnalités PHP ont vu le jour. Je vais faire un tour des quelques fonctionnalités les plus pratiques et comment elles peuvent améliorer votre code. Au menu: namespaces, closures, traits, finally, syntaxe array courte, fonctions pour mot de passe, foreach avec list, décompression d'arguments, etc.

Anna Filina

October 02, 2014
Tweet

More Decks by Anna Filina

Other Decks in Programming

Transcript

  1. Objectifs • Simplifier le code. • Améliorer le design. •

    Augmenter la maintenabilité. • Rendre le développement plus agréable. 3
  2. Namespaces // 5.3 // Éviter les collisions de noms entre

    les classes. $my_user = new MyProject\Entity\User(); $lib_user = new SomeLibrary\Entity\User(); // Alias vers des noms trop longs. use CompanyName\Project\Framework\Entity as Entity $user = new Entity\User(); // Essayez Composer! 4
  3. Closures / fonctions anonymes // 5.3 // Assigner à une

    variable $filter_function = function($item) { ... }; 5
  4. Closures / fonctions anonymes // Fonction de rappel $products =

    array( ! array("name" => "Skyrim", "price" => 30), ! array("name" => "Destiny", "price" => 50) ); $results = array_filter($products, function($item) { ! return $item["price"] <= 40; }); 6
  5. Traits // 5.4 // Importez des groupes de propriétés et

    de méthodes. trait TextOverlay { function setText() { ... } function setFontSize() { ... } } trait ImageBackground { function setUrl() { ... } } class FacebookQuote { ! use TextOverlay; ! use ImageBackground; } 7
  6. Finally // 5.5 // Pratique si vous devez executer du

    code qu'il y ait une exception ou pas. try { ! create_temp_file(); ! write_to_temp_file(); ! output_temp_file(); } catch(SomeException $e) { ! echo "Some error"; } finally { ! delete_temp_file(); } 8
  7. Syntaxe array courte // 5.4 // Difficile à lire si

    on utilise des hiérarchies complexes. $products = array( ! array( ! ! "name" => "Skyrim", ! ! "price" => 30, ! ! "requirements" => array( ! ! ! "os" => array("Win XP", "Win Vista", "Win 7"), ! ! ! "ram" => 2048 ! ! ) ! ), ! array( ! ! "name" => "Diablo 3", ! ! "price" => 50, ! ! "requirements" => array( ! ! ! "os" => array("Win XP", "Win Vista", "Win 7", "Win 8"), ! ! ! "ram" => 1024 ! ! ) ! ) ); 9
  8. Syntaxe array courte $products = [ ! [ ! "name"

    => "Skyrim", ! "price" => 30, ! "requirements" => ! [ ! "os" => [ "Win XP", "Win Vista", "Win 7" ], ! ! "ram" => 2048 ! ! ] ! ], ! [ ! "name" => "Diablo 3", ! "price" => 50, ! "requirements" => ! [ ! "os" => ["Win XP", "Win Vista", "Win 7", "Win 8"], ! "ram" => 1024 ! ] ! ] ]; 10
  9. Fonctions mot de passe // 5.5 $pass = password_hash("mypass", PASSWORD_BCRYPT,

    [ ! "cost" => 12, ! "salt" => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]); // Entre .25 et .50 secondes if (password_verify($form_password, $db_password)) {...} 11
  10. foreach avec list // 5.5 $shape = [ [0, 0],

    [2, 4], [4, 0] ]; foreach ($shape as list($x, $y)) { line_to_coords($x, $y); } 12
  11. Services • Développement: PHP, JS, etc. • Résolution de problèmes:

    bogues, performance, etc. • Mentorat et formations. • Conseils: stratégie de tests, architecture, etc. 14