$30 off During Our Annual Pro Sale. View Details »

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
PRO

October 02, 2014
Tweet

More Decks by Anna Filina

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 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

    View Slide

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

    View Slide

  6. 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

    View Slide

  7. 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

    View Slide

  8. 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

    View Slide

  9. 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

    View Slide

  10. 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

    View Slide

  11. 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

    View Slide

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

    View Slide

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

    View Slide

  14. 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

    View Slide