
Dans cette leçon vidéo, le formateur explique comment créer et manipuler des fonctions personnalisées en PHP. Il commence par la syntaxe de base avec le mot‑clé `function`, montre comment appeler une fonction et comment passer des arguments pour personnaliser la sortie. Il distingue l’usage de `echo` (affichage direct) et `return` (renvoi de valeur) et illustre comment exploiter la valeur retournée. Le cours introduit ensuite l’utilisation de boucles à l’intérieur d’une fonction pour répéter un message, la concaténation avec `<br>` pour les sauts de ligne, et la gestion d’un compteur d’itérations passé en argument avec une valeur par défaut. La portée des variables est abordée : les variables définies hors d’une fonction sont globales mais invisibles à l’intérieur, d’où l’usage de `$GLOBALS` ou du mot‑clé `global` pour les rendre accessibles. Enfin, il présente la récursivité à travers le calcul de la factorielle, en insistant sur la condition d’arrêt pour éviter les boucles infinies. Chaque concept est illustré par du code exécuté en temps réel, avec explication des erreurs courantes (notifications de variable non définie) et des bonnes pratiques.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon de PHP. Aujourd'hui nous allons voir comment créer et manipuler des fonctions personnalisées. En PHP, et comme c'est le cas dans les autres langages de programmation, les fonctions permettent de factoriser un code qui est susceptible d'être répété à plusieurs endroits. Pour créer une fonction en PHP, on fait appel au mot-clé function comme ceci. Ensuite, on va nommer notre fonction en lui donnant un identifiant. On mettra par exemple f. Les parenthèses qui sont ici servent à accueillir des arguments éventuels. Sinon, on peut laisser notre fonction sans argument et déclarer directement le corps de la fonction. Dans ce cas, on va tout simplement afficher un message comme ceci. Jusqu'ici nous avons créé la fonction mais elle ne sera pas exécutée. Bon d'ailleurs quand j'exécute la page sur le navigateur pour voir le résultat, il ne s'affiche rien du tout et c'est tout à fait normal parce que la fonction c'est vrai qu'elle est créée mais elle n'a pas été appelée. Bon afin d'exécuter la fonction il faut l'appeler. On mettra tout simplement ici f. Le fait de déclarer l'identifiant de la fonction permet d'appeler celle-ci. Donc maintenant quand j'exécute, j'ai bien le message Fonction appelée qui est affiché à l'écran. Maintenant imaginez que je veux changer la nature de message à afficher. Par exemple au lieu que ce soit toujours Fonction appelée, je veux que ce soit un autre message. Dans ce cas je vais passer un argument ici que j'appellerai msg et ici je vais spécifier le message souhaité. Par exemple Message personnalisé. Donc là c'est la chaîne de caractères que je vais passer en guise d'argument. Et là, au lieu d'afficher le message fonction appelée, je vais afficher l'argument msg comme ceci. Donc maintenant quand j'exécute, j'ai bien le message personnalisé qui est affiché. Notez bien que la fonction dans ce cas est censée afficher quelque chose à l'écran, mais imaginez que l'on veut pas vraiment afficher mais on veut affecter ce résultat à une autre variable ou bien en faire autre chose. Dans ce cas, au lieu de mettre echo, on va tout simplement mettre return. Notre fonction permet de retourner une valeur. Cette valeur-là sera interceptée au moment de l'appel et c'est à nous de décider ce qu'on va en faire. Dans ce cas, quand j'exécute ce code, j'aurai rien. C'est vrai que la fonction a retourné le message, mais je l'ai pas exploité. Maintenant, il suffit d'afficher le message. Alors je mettrai quelque chose comme ça: echo f, c'est-à-dire que je vais afficher le résultat de retour de la fonction f qui est censée accueillir l'argument message personnalisé. Maintenant j'exécute et j'ai toujours le message personnalisé qui est affiché. Maintenant imaginez que je veux afficher mon message personnalisé plusieurs fois sur plusieurs lignes. Donc je vais prévoir une boucle au sein de la fonction comme ceci. Je mettrai par exemple for i= 0, i< 5, i++. Je vais prévoir une variable qui s'appelle rt pour dire la variable de retour à laquelle je vais affecter msg concaténé avec br qui est censé faire un retour à la ligne. Bon, maintenant à chaque fois rt sera écrasé, donc je vais faire quelque chose comme ça. Donc rt. pour dire que je vais conserver l'ancienne valeur de rt à laquelle je vais concaténer 2 messages avec le retour à la ligne. Et maintenant je vais retourner rt. Maintenant quand je vais exécuter, ce qui est censé se passer c'est l'affichage du message personnalisé 5 fois, message par ligne. Donc Bon, j'exécute. J'ai ce résultat. C'est normal d'avoir une notification à la ligne 4 parce que la première fois RT n'est pas créé. Bien sûr, pour échapper cette erreur, il suffit de mettre ici un@ ou mettre un truc du genre, par exemple RT carrément égal à une chaîne vide au début. Comme ça, on va éviter la première notification. Bon, quand j'exécute, j'ai maintenant cinq messages qui ont été affichés chacun dans une ligne à part. Mais maintenant, imaginez que le nombre de fois que je vais afficher ce message revient à moi. Ça veut dire je vais pas le fixer à cinq, mais je vais le passer en guise d'argument. Dans ce cas, je vais juste ajouter un autre argument. Que j'appellerai par exemple nbr, c'est-à-dire le nombre de fois, que je mettrai d'ailleurs ici, voilà, et que je vais spécifier au moment de l'appel. Bon, je vais mettre par exemple ici 6. Alors dans ce cas, je vais afficher le message 6 fois. Bon, j'exécute et j'ai bien 6 messages qui ont été affichés. Sinon, je peux rendre ce paramètre facultatif. Il suffit de l'initialiser avec une variable par défaut dans la partie consacrée à l'accueil des arguments dans la fonction. Je mettrai par exemple ici nbr= 3. Ça veut dire que si la valeur de nbr est spécifiée au moment de l'appel, alors dans ce cas 3 sera écrasé, sera remplacé par 6 comme c'est le cas ici. Sinon alors donc la valeur 3 sera prise par défaut. On va exécuter avec la valeur 6 pour voir. Donc ça affiche 6 messages. Et si j'ai pas spécifié l'argument au moment de l'appel, alors dans ce cas c'est la valeur 3 qui sera prise en compte par défaut. J'exécute et j'ai maintenant 3 messages. Maintenant on va voir la portée des variables en PHP. Pour ça on va simplifier un petit peu la structure de la fonction. On va considérer que ça contient aucun argument. Je vais enlever ça pour le moment. Je mettrai rien ici. Maintenant imaginez que j'ai créé une variable qui s'appelle a à l'extérieur de la fonction. Je mettrai par exemple a égale au caractère a. Maintenant cette variable par défaut elle est globale au script, c'est-à-dire elle est reconnue un peu partout sauf à l'intérieur des fonctions. Donc d'ailleurs imaginez que j'ai fait ça: echo Maintenant je vais appeler la fonction. Alors logiquement, quand j'appelle la fonction, elle est censée afficher la variable a qui est initialisée en dehors de la fonction, mais c'est pas ce qui va arriver. On a bien une notification que la variable a n'est pas définie et c'est tout à fait naturel parce que a qui est là, ce n'est pas le a qui est censé être affiché à l'intérieur de la fonction parce que le a qui est à l'intérieur c'est une variable locale. Alors pour dire au PHP que je veux afficher le a qui est à l'extérieur, c'est-à-dire qui est global, je vais faire appel à la variable superglobale qui s'appelle globals comme ça. Ensuite je mets des crochets et en guise de clé je mettrai le nom de la variable. En fait $globals est un tableau associatif qui est considéré comme étant une variable superglobale et qui accepte comme clé l'identifiant de la variable en tant que chaîne de caractères, ça veut dire démuni de dollars, on la place entre doubles quotes. Donc maintenant quand j'exécute J'ai bien a qui est affiché, c'est-à-dire que maintenant j'ai pu accéder à la variable a qui est déclarée dans un contexte global depuis l'intérieur de la fonction. De la même manière, imaginez que j'ai créé la variable b à l'intérieur de la fonction à laquelle j'ai affecté la valeur b. De la même façon, si je mets echo b comme ça, on n'est pas censé afficher la valeur de b parce que b est locale à la fonction, il n'est pas reconnu à l'extérieur. Donc maintenant quand j'exécute, donc j'ai le a qui est affiché et une notification qui me dit que la variable b n'est pas reconnue. En PHP, on peut procéder à la manipulation suivante. Avant d'initialiser la variable, je vais la déclarer en tant que variable globale de la manière suivante: global et je mets le b. C'est-à-dire que la variable $b qui sera manipulée à l'intérieur de la fonction est désormais considérée comme étant une variable globale et du coup elle sera reconnue à l'extérieur de la fonction. Donc maintenant quand j'exécute, j'ai le 1 et le b qui ont été affichés. Sachez que la notion de la récursivité est aussi prise en charge en PHP. Une fonction récursive est une fonction qui est appelée depuis son corps. Par exemple, imaginez que l'on veut calculer la factorielle d'un nombre. Dans la vidéo précédente, nous avons vu qu'il y a plusieurs fonctions mathématiques qui permettent de faire plein de traitements, mais si on veut créer une fonction personnalisée qui permet de calculer la factorielle d'un nombre entier, alors on va procéder de la manière suivante: Je vais créer la fonction qui s'appelle fact et qui est censée accueillir un argument qui n'est rien d'autre que le nombre dont je veux calculer la factorielle. Je mettrai par exemple nbr. On sait que la factorielle d'un nombre, par exemple 3, c'est égal à 3 fois 2 fois 1. Et on sait aussi que la factorielle du nombre 0 est égale à 1. Donc je vais mettre une condition ici, donc if nbr est égal à 0, nbr égal à 0, ça veut dire si le nombre passé est 0, dans ce cas on va retourner la valeur 1. Sinon, c'est-à-dire si nbr est différent de 0, alors dans ce cas on va retourner le nombre courant qui multiplie fois la factorielle de ce nombre-là moins 1, de la manière suivante. On va mettre return nbr qui multiplie fact, la fonction fact, nbr- 1. Et là vous avez remarqué que je fais appel à la fonction factorielle depuis l'intérieur de la fonction elle-même. Et c'est une fonction récursive qui va continuer ainsi jusqu'à ce que nbr- 1 soit égal à 0. Alors dans ce cas il va retourner 1 et on sort carrément de la fonction. Donc maintenant on va faire un exemple, on va mettre echo fact par exemple. On sait que la factorielle de 3 c'est 3× 2× 1 ce qui donne 6. Donc j'actualise, ça me donne bel et bien 6. Bon, si je mets maintenant 5, la factorielle de 5 c'est 5 fois 4 fois 3 fois 2 fois 1, ce qui donne 120. Maintenant j'actualise et ça me donne 120. En fait il s'agit d'un exemple classique de la récursivité, mais le plus important c'est de savoir qu'on peut appeler une fonction à l'intérieur d'elle-même à condition de toujours mettre une condition de sortie, sinon on va se retrouver dans une fonction qui se répète d'une manière indéfinie, ce qui reproduit l'effet d'une boucle infinie. Ce sera tout pour cette séance. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









