<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lior Chamla</title>
    <description>The latest articles on DEV Community by Lior Chamla (@liorchamla).</description>
    <link>https://dev.to/liorchamla</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F361161%2Fcb148338-c9e3-4885-859b-d027eb060aef.jpeg</url>
      <title>DEV Community: Lior Chamla</title>
      <link>https://dev.to/liorchamla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/liorchamla"/>
    <language>en</language>
    <item>
      <title>Préparer une conférence pour gagner des cadeaux ?!</title>
      <dc:creator>Lior Chamla</dc:creator>
      <pubDate>Wed, 22 Jun 2022 14:07:00 +0000</pubDate>
      <link>https://dev.to/liorchamla/preparer-une-conference-pour-gagner-des-cadeaux--1n20</link>
      <guid>https://dev.to/liorchamla/preparer-une-conference-pour-gagner-des-cadeaux--1n20</guid>
      <description>&lt;p&gt;J'organise un &lt;em&gt;concours&lt;/em&gt;, plein de cadeaux à gagner et surtout du progrès pour chacun d'entre nous ! C'est ouvert à tous !&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comment il marche ton concours ?!&lt;/li&gt;
&lt;li&gt;C'est quoi l'objectif ?&lt;/li&gt;
&lt;li&gt;On raconte ce qu'on veut ?!&lt;/li&gt;
&lt;li&gt;Comment on gagne du coup ?!&lt;/li&gt;
&lt;li&gt;J'ai combien de temps pour me préparer au jour J ?!&lt;/li&gt;
&lt;li&gt;Alors je voudrai bien mais j'ai jamais fait ça !&lt;/li&gt;
&lt;li&gt;Qu'est-ce qu'on gagne à la fin ?&lt;/li&gt;
&lt;li&gt;Comment on s'inscrit ?!&lt;/li&gt;
&lt;li&gt;C'est quoi les cadeaux ?!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Comment il marche ton concours ?!
&lt;/h2&gt;

&lt;p&gt;Chaque participant créé et présente une mini conférence de 10 à 15 minutes à l'oral, avec une présentation visuelle, en live sur ma chaîne Twitch, exclusivement sur un sujet &lt;strong&gt;tech&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  C'est quoi l'objectif ?
&lt;/h2&gt;

&lt;p&gt;L'objectif c'est de te faire monter en compétences sur ta capacité à présenter des sujets à l'oral devant du monde, sur la façon dont tu vas rendre ton explication pédagogique et intéressante même si le sujet semble aride, tout en étant diffusé au plus grand nombre pour apprendre des choses à tout le monde, et bien sur, au final, tenter de remporter des cadeaux 😁&lt;/p&gt;

&lt;p&gt;Ta conférence sera diffusée en live sur Twitch, et si tu l'acceptes, sera enregistrée puis rediffusée sur ma chaîne YouTube 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  On raconte ce qu'on veut ?!
&lt;/h2&gt;

&lt;p&gt;Oui, mais il faut que ce soit un sujet &lt;strong&gt;tech&lt;/strong&gt;, par exemple :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tu nous parles d'une librairie Python ou JS que tu viens de découvrir et en quoi elle est trop bien !&lt;/li&gt;
&lt;li&gt;Tu nous fais une présentation d'un langage que tu aimes destiné aux gens qui ne le connaissent pas ;&lt;/li&gt;
&lt;li&gt;Tu nous racontes comment tu t'es mis à écrire des tests unitaires et quels sont les pièges dans lesquels t'es tombé(e) ;&lt;/li&gt;
&lt;li&gt;Tu nous explique comment on gère les projets dans ta boîte et pourquoi ça marche bien ;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;.. BREF ! Ce que tu veux mais de la technique !&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment on gagne du coup ?!
&lt;/h2&gt;

&lt;p&gt;Un jury composé de développeuses et de développeurs juge sur un barème précis la conférence de chaque participant :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clarté, organisation du propos et pédagogie ;&lt;/li&gt;
&lt;li&gt;Respect du temps (10 à 15 minutes) ;&lt;/li&gt;
&lt;li&gt;Qualité de la présentation visuelle ;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  J'ai combien de temps pour me préparer au jour J ?!
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;La journée de présentation se situera en fin du mois d'août&lt;/strong&gt; ! Ca te laisse quasiment deux mois pour bosser ton sujet et nous pondre une super conférence !&lt;/p&gt;

&lt;h2&gt;
  
  
  Alors je voudrai bien mais j'ai jamais fait ça !
&lt;/h2&gt;

&lt;p&gt;Aucun soucis, n'aies pas peur, je m'engage à me libérer le plus de temps possible pour aider chacune et chacun d'entre vous à choisir un sujet, choisir un angle, organiser le discours et le support visuel ! Bref, je me rend disponible pour faire des entretiens en tête à tête ou à plusieurs où je vous aiderai le plus possible !&lt;/p&gt;

&lt;h2&gt;
  
  
  Qu'est-ce qu'on gagne à la fin ?
&lt;/h2&gt;

&lt;p&gt;Les conférences seront notées par le jury et classées. Les trois meilleurs conférences gagneront des cadeaux très sympas :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;La meilleure conférence gagne une place d'une valeur de 320€ pour le Forum PHP 2022 ainsi que les mêmes cadeaux que les suivants ;&lt;/li&gt;
&lt;li&gt;Les deuxième et troisièmes meilleures conférences gagnent un accès gratuit à plusieurs formations vidéos ;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bien sur les cadeaux s'étofferont au fur et à mesure de l'organisation du concours et j'espère pouvoir en offrir même aux quatrième et cinquième meilleures conférences 🤞&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment on s'inscrit ?!
&lt;/h2&gt;

&lt;p&gt;Rien de plus simple ! Tu te rends sur ce salon Discord : &lt;a href="https://discord.gg/MNncNxMfSR"&gt;https://discord.gg/MNncNxMfSR&lt;/a&gt; et dans le fil appelé "Inscriptions", tu te fais connaître et .. boum t'es inscrit(e) ! Magique !&lt;/p&gt;

&lt;h2&gt;
  
  
  C'est quoi les cadeaux ?!
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pour tous les participants&lt;/strong&gt; : 

&lt;ul&gt;
&lt;li&gt;un accès à toutes mes formations (y  compris la prochaine sur Angular xD); &lt;/li&gt;
&lt;li&gt;un accès premium chez notre ami &lt;strong&gt;Grafikart&lt;/strong&gt; !&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pour les 3 meilleures conférences&lt;/strong&gt; : 

&lt;ul&gt;
&lt;li&gt;une formation de Yoan Dev (&lt;a href="https://yoandev.co"&gt;https://yoandev.co&lt;/a&gt;) ; &lt;/li&gt;
&lt;li&gt;une formation à l'outil Laragon par HappyToDev (&lt;a href="https://happytodev.itanea.fr/l/connaitre-laragon-de-a-a-z"&gt;https://happytodev.itanea.fr/l/connaitre-laragon-de-a-a-z&lt;/a&gt;) ; &lt;/li&gt;
&lt;li&gt;une formation chez DevTheory (&lt;a href="https://devtheory.fr"&gt;https://devtheory.fr&lt;/a&gt;) ;&lt;/li&gt;
&lt;li&gt;Un ensemble Micro / Caméra pour les 2ème et 3ème offerts par Thomas Boileau (&lt;a href="https://twitch.tv/toham"&gt;https://twitch.tv/toham&lt;/a&gt;) : &lt;a href="https://www.ldlc.com/fiche/PB00256552.html"&gt;Micro Bird UM1&lt;/a&gt; et une &lt;a href="https://www.ldlc.com/fiche/PB00324941.html"&gt;Logitech StreamCam&lt;/a&gt; ;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pour la meilleure conférence&lt;/strong&gt; : 

&lt;ul&gt;
&lt;li&gt;tous ces cadeaux ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;deux places pour la ApiPlatform Con&lt;/strong&gt; en Septembre à Lille ;(accessible aussi en ligne)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;une place pour le Forum PHP 2022 à DisneyLand Paris en Octobre !&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;un écran &lt;a href="https://www.ldlc.com/fiche/PB00486062.html"&gt;Samsung Odyssey G5&lt;/a&gt;&lt;/strong&gt; de la part de Thomas Boileau (&lt;a href="https://www.twitch.tv/toham"&gt;https://www.twitch.tv/toham&lt;/a&gt;) ;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;un mug Tutomarks&lt;/strong&gt; offert par ... Tutomarks (&lt;a href="https://twitter.com/tutomarks"&gt;https://twitter.com/tutomarks&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>✨ TDD, BDD, ATDD ... pardon ?</title>
      <dc:creator>Lior Chamla</dc:creator>
      <pubDate>Mon, 31 Aug 2020 16:47:28 +0000</pubDate>
      <link>https://dev.to/liorchamla/tdd-bdd-atdd-pardon-2135</link>
      <guid>https://dev.to/liorchamla/tdd-bdd-atdd-pardon-2135</guid>
      <description>&lt;p&gt;Il y a plein de sujets sur lesquels je suis complètement à la ramasse, mais si il en est un qui m'intéresse vraiment, c'est tout le mouvement qui monte depuis quelques années (même si ça existe depuis des dizaines d'années) à propos du &lt;strong&gt;Test Driven Development (TDD)&lt;/strong&gt; et du &lt;strong&gt;Behavior Driven Development (BDD)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Mais de quoi parle-t-on ? Je suis bien mal placé pour en parler mais je vais quand même essayer 😁😁 &lt;/p&gt;

&lt;p&gt;J'ai d'ailleurs fait mon premier live sur ma chaine YouTube où j'ai appris en direct comment ça fonctionnait :&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/JWH6WhnZvKo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Test Driven Development : les tests c'est AVANT qu'on les écrit 😁
&lt;/h1&gt;

&lt;p&gt;En premier lieu, il faut comprendre ce qu'est le TDD. C'est une philosophie qui repose sur 3 règles :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loi 1 : Vous devez écrire un test qui échoue avant de pouvoir écrire le code de production correspondant.&lt;/li&gt;
&lt;li&gt;Loi 2 : Vous devez écrire une seule assertion à la fois, qui fait échouer le test ou qui échoue à la compilation.&lt;/li&gt;
&lt;li&gt;Loi 3 : Vous devez écrire le minimum de code de production pour que l'assertion du test actuellement en échec soit satisfaite.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Exemple en JS, en utilisant la librairie&lt;/span&gt;
&lt;span class="c1"&gt;// Jest pour créer les tests :&lt;/span&gt;

&lt;span class="c1"&gt;// Etape 1 : j'écris un test qui va foirer&lt;/span&gt;
&lt;span class="nx"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;should add numbers correctly&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Au moment d'écrire cette ligne&lt;/span&gt;
  &lt;span class="c1"&gt;// La fonction "additionner" n'existe&lt;/span&gt;
  &lt;span class="c1"&gt;// tout simplement pas !&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;resultat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;additionner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;toBe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Etape 2: Je joue les tests&lt;/span&gt;
&lt;span class="c1"&gt;// et je me rend compte qu'il est évidemment&lt;/span&gt;
&lt;span class="c1"&gt;// ROUGE puisque la fonction n'existe pas.&lt;/span&gt;

&lt;span class="c1"&gt;// Etape 3 : Je code ce qu'il faut pour &lt;/span&gt;
&lt;span class="c1"&gt;// que le test passe au vert !&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Etape 4 : Le test passe donc au vert&lt;/span&gt;
&lt;span class="c1"&gt;// et je peux continuer le processus&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Ce qui est merveilleux avec cette façon de procéder, c'est que au fur et à mesure qu'on avance dans le projet, on gagne en sérénité ! A chaque fois qu'on a peur d'avoir fait une connerie, on rejoue l'ensemble de nos tests :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;si ça passe, c'est que tout va bien&lt;/li&gt;
&lt;li&gt;si au contraire un ou plusieurs tests passent au rouge, c'est qu'on a merdé !&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour en savoir plus, vous pouvez voir cette vidéo de Grafikart :&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/_M7Zp3QL-kw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  BDD, ATDD : Le fonctionnel et le métier au centre de nos préoccupations
&lt;/h1&gt;

&lt;p&gt;On l'a donc bien compris, &lt;strong&gt;le principe du TDD c'est de tester des unités de code (une fonction ou une classe). On teste donc une implémentation&lt;/strong&gt;. Mais pour le BDD ou le ATDD, ce n'est pas du tout le principe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BDD et ATDD ne sont pas là pour vous aider à tester les détails de l'implémentation&lt;/strong&gt; (le COMMENT), ils sont là pour vous aider à &lt;strong&gt;tester une fonctionnalité attendue&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pour ce faire, vous devez écrire des tests qui soient compréhensibles autant par les devs que par les clients. Dans l'idéal, on peut utiliser &lt;strong&gt;la syntaxe Gherkin&lt;/strong&gt; pour faire ça et voilà à quoi ça ressemble :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight gherkin"&gt;&lt;code&gt;&lt;span class="c"&gt;# Avec Gherkin, on va décrire HUMAINEMENT&lt;/span&gt;
&lt;span class="c"&gt;# des fonctionnalités attendues&lt;/span&gt;
&lt;span class="kd"&gt;Feature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; Blog posts management
  &lt;span class="c"&gt;# La "feature" décrit une catégorie de &lt;/span&gt;
  &lt;span class="c"&gt;# de fonctionnalités&lt;/span&gt;

  &lt;span class="c"&gt;# On peut décrire différents scenarios&lt;/span&gt;
  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;an &lt;/span&gt;admin can create a post
    &lt;span class="nf"&gt;Given &lt;/span&gt;I'm logged in as ADMIN
    &lt;span class="nf"&gt;When &lt;/span&gt;I create a blog post
    &lt;span class="nf"&gt;Then &lt;/span&gt;I can see the blog post on the home page

  &lt;span class="kn"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; we can read a blog post
    &lt;span class="nf"&gt;Given &lt;/span&gt;I'm on the home page
    &lt;span class="nf"&gt;When &lt;/span&gt;I click on a blog post
    &lt;span class="nf"&gt;Then &lt;/span&gt;I see the blog post details
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Vous le voyez bien ici, on ne parle pas du tout de base de données, de la façon dont on s'authentifie sur l'application, on ne sait même pas en quel langage l'application est écrite. On teste ici les fonctionnalités attendues.&lt;/p&gt;

&lt;p&gt;L'avantage de ce type d'approche est que vous pouvez vous rendre compte rapidement si votre application répond ou pas à ce que vous avez convenu avec le client lui même !&lt;/p&gt;

&lt;p&gt;Si vous souhaitez VRAIMENT comprendre tout ça, je ne peux que vous encourager à regarder &lt;strong&gt;cet atelier de Michael Azerhad (WealCome)&lt;/strong&gt; qui tient un podcast très intéressant sur ces sujets (à retrouver sur Spotify ou SoundCloud) :&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/jxBmKvS7lAo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Allez plus loin
&lt;/h1&gt;

&lt;p&gt;Comme d'habitude, j'ai envie de vous donner une ressource pour replacer un peu tout ça en contexte et j'ai pile poil ce qu'il vous faut ! *&lt;em&gt;Une conférence de Thimotée Barray au Forum PHP 2018 *&lt;/em&gt; de l'AFUP :&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/X9PAXK8DjFQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Retrouvez moi 🚀
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Inscrivez vous à ma newsletter : &lt;a href="http://eepurl.com/gZ0LEH"&gt;http://eepurl.com/gZ0LEH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rejoignez moi sur YouTube : &lt;a href="https://youtube.com/LiorChamla"&gt;https://youtube.com/LiorChamla&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Mes fonctionnalités préférées de PHP 7.4</title>
      <dc:creator>Lior Chamla</dc:creator>
      <pubDate>Sun, 30 Aug 2020 23:05:34 +0000</pubDate>
      <link>https://dev.to/liorchamla/mes-fonctionnalites-preferees-de-php-7-4-30pj</link>
      <guid>https://dev.to/liorchamla/mes-fonctionnalites-preferees-de-php-7-4-30pj</guid>
      <description>&lt;h1&gt;
  
  
  ✨ PHP 7.4 apporte de vraies nouveautés !
&lt;/h1&gt;

&lt;p&gt;On parle évidemment beaucoup de la version 8 de PHP qui ne devrait plus tarder maintenant. &lt;a href="https://stitcher.io/blog/new-in-php-8"&gt;Mais avant d'étudier les nouveautés qui vont être apportées sur cette future version majeure&lt;/a&gt;, savez vous quelles sont les nouveautés qui ont été apportées par PHP 7.4 et que vous pouvez utiliser dès aujourd'hui ?&lt;/p&gt;

&lt;p&gt;▶ Voici les deux fonctionnalités que je préfère et que j'utilise tous les jours avec mes étudiants !&lt;/p&gt;

&lt;h2&gt;
  
  
  Les propriétés typées dans les classes
&lt;/h2&gt;

&lt;p&gt;Auparavant, les propriétés des classes ne pouvaient pas être typées, une propriété publique pouvait donc se voir assigner un type qu'on ne souhaitait pas :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MaClasse&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nv"&gt;$age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;$obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MaClasse&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Aucune erreur, tout va bien !&lt;/span&gt;
&lt;span class="nv"&gt;$obj&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Hello World !"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Depuis la sorti de PHP 7.4, on peut maintenant typer les propriétés de nos classes afin de s'assurer que jamais on ne pourra y stocker une valeur que l'on ne souhaite pas stocker :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MaClasse&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;$age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;$obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;MaClasse&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Erreur : tu ne peux pas assigner&lt;/span&gt;
&lt;span class="c1"&gt;// une string à MaClasse::$age qui doit&lt;/span&gt;
&lt;span class="c1"&gt;// être un int !&lt;/span&gt;
&lt;span class="nv"&gt;$obj&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Hello World !"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Ca n'a peut être l'air de rien comme ça mais c'est une vraie révolution dans notre façon d'éviter les bugs et d'avoir une meilleur expérience développeur (DX) 👌&lt;/p&gt;

&lt;h2&gt;
  
  
  Les fonctions flèchées
&lt;/h2&gt;

&lt;p&gt;On les connait déjà très bien en Javascript : les fonctions fléchées permettent d'écrire des fonctions anonymes en une seule ligne. Et ce n'est pas qu'une question d'élégance du code, ça va plus loin 😉&lt;/p&gt;

&lt;p&gt;Un exemple des problèmes qu'on rencontrait avant la 7.4&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="nv"&gt;$nombres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nv"&gt;$multiplicateur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Erreur ! En PHP, on ne peut pas accéder&lt;/span&gt;
&lt;span class="c1"&gt;// à une variable déclarée en dehors d'une&lt;/span&gt;
&lt;span class="c1"&gt;// fonction !&lt;/span&gt;
&lt;span class="nv"&gt;$transformation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;$multiplicateur&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nv"&gt;$nombres&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Correct ! Grâce au mot clé "use", on indique&lt;/span&gt;
&lt;span class="c1"&gt;// à PHP que la variable $multiplicateur&lt;/span&gt;
&lt;span class="c1"&gt;// déclarée à l'extérieur de la fonction &lt;/span&gt;
&lt;span class="c1"&gt;// peut être utilisée dans la fonction !&lt;/span&gt;
&lt;span class="nv"&gt;$transformation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$multiplicateur&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;$multiplicateur&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nv"&gt;$nombres&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// résultat&lt;/span&gt;
&lt;span class="c1"&gt;// $transformation =&amp;gt; [2, 4, 6, 8]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Voyons maintenant ce que nous apporte la nouvelle possibilité d'écrire des fonctions fléchées :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="nv"&gt;$nombres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nv"&gt;$multiplicateur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$transformation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="c1"&gt;// Non seulement la fonction ne prend plus&lt;/span&gt;
  &lt;span class="c1"&gt;// qu'une seule ligne, mais remarquez :&lt;/span&gt;
  &lt;span class="c1"&gt;// elle connait la variable $multiplicateur&lt;/span&gt;
  &lt;span class="c1"&gt;// sans avoir à lui préciser !&lt;/span&gt;
  &lt;span class="k"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;$multiplicateur&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nv"&gt;$nombres&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// résultat&lt;/span&gt;
&lt;span class="c1"&gt;// $transformation =&amp;gt; [2, 4, 6, 8]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  En savoir plus sur les changements apportés par PHP 7.4
&lt;/h2&gt;

&lt;p&gt;Si vous souhaitez en savoir plus sur tout ce que PHP 7.4 a apporté, &lt;a href="https://www.php.net/manual/fr/migration74.php"&gt;vous pouvez consulter la documentation officielle de PHP&lt;/a&gt;, et pourquoi pas se faire tout expliquer sur un plateau par Damien Seguy qui avait abordé l'ensemble des changements au forum PHP de l'AFUP en 2019 🔽🔽🔽&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/fhrC-AspnIk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Retrouvez moi 🚀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Inscrivez vous à ma newsletter : &lt;a href="http://eepurl.com/gZ0LEH"&gt;http://eepurl.com/gZ0LEH&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rejoignez moi sur YouTube : &lt;a href="https://youtube.com/LiorChamla"&gt;https://youtube.com/LiorChamla&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>php</category>
    </item>
  </channel>
</rss>
