Apprendre PHP (10/19) - Inclusions et arrêts prématurés

Dans cette leçon, le formateur explique comment réutiliser du code PHP grâce aux fonctions d’inclusion (include, require, includeonce, requireonce) et montre leurs différences de comportement en cas d’erreur de chargement. Il illustre l’inclusion de fichiers contenant du PHP, du HTML, du CSS ou du JavaScript, et montre comment centraliser des parties communes d’un site (en‑têtes, menus, pieds de page) pour faciliter la maintenance. Ensuite, il présente les mécanismes d’arrêt prématuré du script avec les fonctions exit et die, en les combinant avec un test d’existence de fichier (file_exists) pour contrôler le flux d’exécution et afficher des messages d’erreur personnalisés. Des exemples concrets (boucle d’inclusion, inclusion conditionnelle) permettent de visualiser le comportement de chaque fonction.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon de PHP. Aujourd'hui, nous allons voir les inclusions et les arrêts prématurés. La dernière fois, nous avons fait le code suivant. Il s'agit en fait d'un bout de code PHP qui permet de manipuler un formulaire, mais le plus important c'était de récupérer les posts d'une manière automatique. Nous avons vu qu'on peut créer des variables dynamiques qui peuvent s'adapter avec tous les formulaires quelle que soit leur taille. Et on peut ainsi récupérer les valeurs postées par le client en utilisant soit la méthode POST ou bien la méthode GET grâce à ces 4 lignes du code. J'ai aussi évoqué que si vous disposez de plusieurs pages qui utilisent des formulaires, alors il faut déclarer ce script dans chacune de ces pages-là. Mais au lieu de faire ça d'une manière manuelle, c'est-à-dire copier le code et le coder sur plusieurs pages, on va le mettre dans une seule et unique page que l'on va inclure dans chacune des pages où on en aura besoin. La méthode est la suivante: on va donc copier ce code, on va créer un nouveau document PHP que l'on va appeler par exemple form.php, que l'on va mettre à côté du fichier index par exemple. Ce fichier va contenir le bout de code que je viens de déclarer. Bien sûr, il faut délimiter par le tag PHP. Maintenant, une fois le code intégré, je vais l'inclure dans le fichier index.php de la manière suivante. Je vais éliminer ce code et je mettrai à la place la fonction include et j'appelle le fichier qui s'appelle form.php comme ceci. Include est une fonction PHP qui permet d'appeler un fichier, c'est-à-dire il va inclure le code que ce fichier-là contient d'une manière dynamique. Du coup, il sera intégré dans ce code comme s'il a été déclaré manuellement ici. Maintenant, j'actualise. Quand je clique sur Valider, je vois bien que le traitement est le même, il n'a pas changé. C'est-à-dire que le code que j'ai exporté dans le document form.php est maintenant inclus dans le fichier index.php. Index.php grâce à la fonction include comme ceci. Mais il n'y a pas que la fonction include, il y a aussi la fonction require comme ça. Donc j'exécute. Alors j'ai toujours le même traitement, voilà. Donc quand je mets une valeur par exemple différente d'une chaîne vide, voilà ce que j'ai comme résultat, c'est-à-dire que ça marche toujours. En fait, c'est quoi la différence entre require et include? Bon, include est une fonction qui permet de retourner une notification au cas où le fichier n'a pas été trouvé. Par contre require, il permet de retourner une erreur bloquante, ça veut dire une erreur qui va empêcher le reste du code de s'exécuter. Par exemple, imaginez que j'essaie d'inclure un fichier qui s'appelle form.php. Bien entendu, c'est un fichier qui n'existe pas dans le dossier spécifié, c'est-à-dire le dossier courant. Donc maintenant avec require, voilà ce qui va se passer. Donc quand j'exécute, j'ai bien une erreur. Donc voilà, c'est une erreur fatale qui me dit que le fichier que je tente d'inclure n'existe pas dans l'emplacement spécifié. Par contre, avec include, j'aurai toujours l'erreur, mais ça n'empêche pas le script de s'exécuter. C'est-à-dire que j'ai bien l'affichage de l'erreur. D'ailleurs, cet affichage, je peux l'arrêter, bon, à l'aide des méthodes que l'on a vues avant. Mais l'essentiel, c'est que la suite du code ne s'est pas interrompue, c'est-à-dire que le HTML s'est exécuté correctement jusqu'à la fin du document. Alors, en général, vous avez le choix soit entre include ou bien require, qui font pratiquement la même chose, à la différence du type d'erreur qui peut être généré suite à une erreur de chargement du fichier. Mais il y a aussi les fonctions include_once comme ça, ou bien require_once. En fait, le suffixe once signifie que le fichier sera inclus une seule fois. Bon, pour mieux voir comment ça fonctionne, bon, on va se rendre dans le fichier form.php et on va mettre un truc du genre, par exemple, echo message inclus. Dans ce cas, on va afficher le message inclus suite à l'inclusion du fichier form.php. Donc maintenant, là, quand je vais mettre include form.php une seule fois. Alors j'ai bien le message inclus ici. Bon, maintenant je vais essayer d'inclure ça dans une boucle. Je mettrai donc for i= 0, par exemple i< ou= 10, i++. Et maintenant je fais ce traitement 10 fois, ça veut dire je vais inclure le fichier form.php 10 fois dans mon document. J'exécute la page. Bon, je vois bien que le message est inclus 10 fois, donc il y a une répétition. Donc il y a le message qui se répète 10 fois. Bon, maintenant si je mets include_once et que j'exécute, le message s'affiche une seule fois. Alors ça, c'est la différence entre include et include_once. include va inclure le fichier autant de fois que la fonction est appelée, alors que include_once va l'inclure une seule fois s'il est déjà inclus. C'est-à-dire si vous tentez d'inclure un autre fichier, ça veut dire avec un nom différent, dans ce cas il sera inclus sans le moindre problème. Alors qu'include_once, il va évaluer, ça veut dire il va voir si le fichier est déjà inclus, alors il va pas l'inclure une deuxième fois. La même remarque pour require_once. Et d'ailleurs, la différence est toujours la même entre include_once et require_once. include_once, en cas d'erreur, ça va pas bloquer le script, alors que require_once, il va bloquer le script en affichant des messages d'erreur. En réalité, les fonctions include ou bien require ne permettent pas d'inclure qu'un code purement PHP, mais il peut aussi inclure un code qui contient du JavaScript, du HTML, voire même du CSS. À titre d'exemple, si vous avez un projet web qui contient de nombreuses pages et dans chacune de ces pages vous avez déclaré ces 2 lignes Ça veut dire que ce sont 2 lignes qui vont se répéter sur toutes les pages. Alors au lieu de les déclarer d'une manière manuelle dans chacune des pages, je peux les inclure avec du PHP à l'aide de la fonction include ou bien require. Autrement dit, voilà, je vais prendre maintenant ce code comme ça, je vais le copier dans un autre fichier que j'appellerai par exemple head.php ou bien head.html, peu importe. Voilà, donc maintenant je vais intégrer le code dedans. Donc voici le code qui sera inclus. Maintenant, dans le fichier index.php, je vais retirer ce code et je vais le remplacer par la déclaration de l'inclusion. Include, et je mettrai head.php comme ceci. Donc maintenant, quand j'exécute— bon, d'ailleurs, je vais retirer ça. La même chose pour le message que j'avais déclaré tout à l'heure, j'enlève ça. Alors là, donc j'ai le fichier qui s'appelle head.php qui contient la balise meta et la balise link qui incluent le CSS que j'ai appelé ici à l'aide de la fonction include. Donc maintenant j'exécute. Alors on voit bien que le style CSS est maintenu, ça veut dire que l'inclusion est bien faite. Et quand j'affiche le code source aux côtés du client, je vais voir que la balise meta et la balise link ont bien été incluses dans le document courant. Bien entendu, cette technique s'avère pratique si vous avez des choses qui se répètent sur chacune des pages de votre projet web, comme par exemple les menus, les en-têtes, les bas de page, etc. Alors au lieu de les déclarer d'une manière manuelle dans chacune des pages, il suffit de les mettre dans un fichier unique et ensuite les inclure. Comme ça, si une modification s'impose plus tard, il vous sera facile de modifier un seul fichier plutôt que de modifier de nombreux fichiers. Maintenant nous allons voir les arrêts prématurés en PHP. En PHP, il existe 2 fonctions qui permettent d'arrêter prématurément l'exécution d'un fichier. Par exemple, dans ce cas, imaginez que je veux inclure le fichier qui s'appelle form.php, mais il est impératif que ce fichier soit inclus. Ça veut dire s'il n'est pas inclus, donc pas la peine d'exécuter la suite du code. Et je voudrais quand même pas afficher le message par défaut du PHP, c'est-à-dire je peux facilement mettre ici require Dans ce cas, si le fichier n'existe pas, bon, bien entendu, l'exécution sera arrêtée prématurément. Mais ça sera arrêté d'une manière accidentelle, alors que moi je veux bien programmer cet arrêt moi-même. Dans ce cas, je vais faire un test sur l'existence de ce fichier. Bon, je mettrai un truc du genre, par exemple, if je fais appel à la fonction file_exists, que l'on verra d'ailleurs prochainement dans le cours dédié aux fichiers. Et là, je vais mettre le fichier form.php, c'est-à-dire que je vais vérifier si ce fichier existe. Bon, bien sûr, moi le fichier qui existe chez moi, il s'appelle form.php, mais là c'est juste un test. Dans ce cas, si le fichier existe, alors je vais l'inclure. Sinon, je mettrai else, et là je vais arrêter prématurément mon programme à l'aide de la fonction exit. Comme ça, c'est une fonction, c'est-à-dire je peux lui associer des parenthèses, sinon je fais juste comme ceci. Donc maintenant, quand j'exécute, je vois bien qu'il n'y a aucun contenu qui s'affiche. En réalité, il s'agit d'un arrêt prématuré qui est programmé à la ligne 5, c'est-à-dire qu'au niveau de cette ligne, le code ne s'exécute plus. Sinon, je peux afficher un message, par exemple Erreur de chargement du fichier. Dans ce cas, quand j'exécute, j'ai bien le message erreur de chargement du fichier qui est affiché. Alors, la fonction exit arrête prématurément le programme et peut aussi, selon notre choix, afficher un message. Il y a aussi une autre fonction qui s'appelle die qui fait la même chose. Ça veut dire qu'il va arrêter prématurément l'exécution du script PHP et bien sûr tout ce qui va suivre après, que ce soit du HTML, CSS ou bien JavaScript. Et bien sûr, il peut aussi afficher ou non un message de notre choix. Donc quand j'exécute, j'aurai toujours le même résultat. Alors die, c'est un alias de la fonction exit. Notez que ces 2 fonctions, ça veut dire exit et die, qui permettent un arrêt prématuré de l'exécution d'un script PHP, sont très utiles surtout si la suite du code repose sur un traitement décisif. Et sans ce traitement-là, pas la peine d'exécuter la suite du code. Comme par exemple le fait qu'une connexion à une base de données échoue, ou bien un mauvais chargement de fichiers comme on vient de le voir, etc. Alors, ça 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









