Slide 1

Slide 1 text

foolab.ca | @foolabca Modernisez votre code PHP PHP Québec - 2 octobre 2014

Slide 2

Slide 2 text

Anna Filina • Développement • Résolution de problèmes • Enseignement • Conseils 2

Slide 3

Slide 3 text

Objectifs • Simplifier le code. • Améliorer le design. • Augmenter la maintenabilité. • Rendre le développement plus agréable. 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Closures / fonctions anonymes // 5.3 // Assigner à une variable $filter_function = function($item) { ... }; 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

foreach avec list // 5.5 $shape = [ [0, 0], [2, 4], [4, 0] ]; foreach ($shape as list($x, $y)) { line_to_coords($x, $y); } 12

Slide 13

Slide 13 text

Décompression d'arguments // 5.6 function addToCart($qty, $name, $price) {...} $product = ["Civilization V", 40]; addToCart(1, ...$product); 13

Slide 14

Slide 14 text

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