Le langage PHP – 3ème partie
Transcription
Le langage PHP – 3ème partie
Bases de données et Sites Web. Li345 Le langage PHP – 3ème partie Fonctions Programmation structurée 1 Fonctions en PHP Les fonctions en PHP doivent être définies avant leur appel. Le nom d’une fonction ne commence pas par ’$’, et n’est pas sensible à l’utilisation des majuscules/minuscules. function NomFonction ($arg1, $arg2,...) { // Ici le code de la fonction return valeur } Une fonction peut prendre un nombre quelconque, mais fixe d’arguments La valeur retournée peut être un tableau Beaucoup de fonctions prédéfinies sur php.net 2 Définition et appel de fonction On définit une fonction avant de pouvoir l’utiliser: function fn_cube ($n) { $ncube = $n * $n * $n return $ncube } On appelle une fonction // Je calcule 3 au cube $trois_cube = fn_cube (3); // J’affiche le cube de $trois_au_cube echo fn_cube ($trois_au_cube); } 3 Fonction = boîte noire Une fonction est une partie de code qui est isolée du programme appelant. Il faut retenir : toutes les variables de la fonction sont locales, inaccessibles au programme appelant; toutes les variables du programme appelant sont inaccessibles dans la fonction; le programme et la fonction ne communiquent que par les valeurs transmises et la valeur reçue. Il est possible de définir des variables globales, ainsi qu’un passage de paramètre par adresse (grâce au ‘&’), mais déconseillé car risque d’effets de bord 4 Variables locales function Addition ($i, $j) { // $i, $j et $somme variables locales $somme = $i + $j; $i = 2; $j = 3; return $somme; } Les variables locales n’existent que pendant l’exécution de la fonction. 5 Passage de paramètre par valeur Un programme appelant passe des valeurs à la fonction. ... $i = 1; $j = 1; // Appel en passant des littéraux $k = Addition (2, 3); // // Appel en passant les valeurs de $i et $j $k = Addition ($i, $j); // //..$i et $j valent toujours 1 ! le programme n’influe pas sur les variables locales de la fonction. 6 Valeurs par défaut Les arguments peuvent avoir des valeurs par défaut. function Mail ($texte, $email = "[email protected]") { // Ici le corps de la fonction } On peut faire un appel avec deux paramètres: Mail (“Bonjour Cédric”, "[email protected]"); Ou avec un seul, le second prenant la valeur par défaut: Mail (“Bonjour Philippe”); On ne peut utiliser les valeurs par défaut que de droite à gauche dans la liste des arguments, et en commençant par le dernier. 7 Exemple 1 : lire et afficher <HTML><HEAD> <TITLE>Accès à un fichier</TITLE> </HEAD><BODY BGCOLOR=white> <?php Et si on ne peut pas ouvrir ? $films = fopen ("films.txt", "r"); Si fichier change de nom ? while ($ligne = fgets($films, 1024)) { $tab = explode (" ", $ligne); echo "Le film " . $tab[0] Qu’est ce que $tab[0] ? . " est réalisé par " . $tab[3] . " " . $tab[2] . "<BR>"; } Affichage d’un tableau ?> </BODY></HTML> 8 Fonction « ouvrir un fichier » <?php // Définition des constantes define ("FILMS", "films.txt"); define ("LECTURE", "r"); define ("ECRITURE", "w"); ?> constantes.php <?php function OuvrirFichier ($nom, $mode) { fonctions.php // Appel à la fonction PHP fopen $fichier = fopen ($nom, $mode); // Vérifier que le fichier est ouvert if ($fichier == true) return $fichier; else { echo "Pb d’ouverture de $nom<br>"; return false; }}?> 9 Fonction «lire un film dans le fichier» <?php function LigneFilm ($fichier) { // On lit une ligne du fichier $ligne = fgets($fichier, 1024); // Fin du fichier? On renvoie false if ($ligne == false) return false; else { // On crée un tableau $tab = explode (" ", $ligne); $film["titre"] = $tab[0]; $film["prenom"] = $tab[3]; $film["nom"] = $tab[2]; return $film; } } ?> fonctions.php 10 Fonction de création d’un tableau HTML <?php // Transforme un tableau PHP en tableau HTML function Tableau ($contenu) { // Initialisation $tableau_html = ""; // Boucle sur les lignes foreach ($contenu as $ligne) { $ligne_html = ""; // Boucle sur les cellules fonctions.php foreach ($ligne as $cellule) $ligne_html .= "<TD>$cellule</TD>"; $tableau_html .= "<TR>$ligne_html</TR>"; } return "<TABLE border=1>$tableau_html</TABLE>"; } ?> 11 Nouveau script <HTML><HEAD> <TITLE>Accès à un fichier</TITLE> </HEAD><BODY BGCOLOR=white> <?php require_once("constantes.php"); require_once("fonctions.php"); $fichier = OuvrirFichier (FILMS, LECTURE); while ($film = LigneFilm($fichier)) $tableau_php[] = $film; echo Tableau ($tableau_php); ?> </BODY></HTML> 12