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