Comme les boucles, les fonctions permettent d'éviter d'avoir à répéter du code PHP. Alors que les boucles se contentent de répéter bêtement, les fonctions sont des robots "intelligents" qui
s'adaptent en fonction de ce qu'on veut faire et qui automatisent grandement la plupart des tâches courantes.
Sommaire
Qu'est-ce qu'une fonction ?
Une fonction est une série d'instructions qui effectue des actions et qui retourne une valeur.
En général, dès qu'on a besoin d'effectuer des opérations un peu longue dont on aura à nouveau besoin plus tard, il est conseillé de vérifier s'il n'existe pas déjà une fonction qui fait cela pour nous.
Et si la fonction n'existe pas, on a la possibilité de la créer.
Une fonction, c'est comme un robot. On ne sait pas ce qui se passe dedans, mais on peut appuyer sur un bouton pour lui demander de faire quelque chose de précis.
Dialogue avec une fonction
Genre de dialogue que l'on peut avoir avec une fonction :
"- Toi, la fonction calculCube, donne-moi le volume d'un cube dont l'arête mesure 4 cm."
La fonction effectue les calculs demandés puis répond :
"- Ce cube a un volume de 64 cm3."
On donne en
entrée à la fonction un
paramètre sur lequel la fonction va faire des calculs et nous retourner en
sortie un résultat.
Grace à la fonction, on n'a pas à se souvenir comment on cacule le volume d'un cube. Là, c'est un cas simple, mais on sera amené à faire des opérations de plus en plus complexes et donc, les fonctions nous permettront de plus nous soucier des détails des calculs.
Concrètement, les fonctions permettent de récupérer des informations comme la date et l'heure, de crypter des données, d'envoyer des emails, de faire des recherches dans du texte, etc…
Les fonctions en PHP
Appeler une fonction
En PHP, on appele une fonction par son nom. Exemple :
Code PHP
<?php
calculCube();
?>
Pour cette fonction, il n'y a rien entre les parenthès (pas de paramètre), ce qui n'a pas grand sens de l'appeler sans lui donner la longueur de l'arête du cu cube pour faire le calcul.
En PHP, certaines fonctions peuvent fonctionner sans paramètres, mais elles sont rares.
Si on veut envoyer un paramètre (nombre, chaîne de caractère, booléen), il faut l'écrire entre les parenthèses :
Code PHP
<?php
calculCube(4);
?>
calculCube
saura qu'il doit travailler avec le nombre 4
Les fonctions acceptent souvent plusieurs paramètres. Dans ce cas, on doit les séparer par des virgules :
Code PHP
<?php
fonctionImaginaire(17, ´vert´, true, 41.7);
?>
Cette fonction recevra 4 paramètres : 17, le texte "vert", la booléen vrai et le nombre 41,7.
Récupérer la valeur de retour de la fonction
On a vu comment appeler une fonction et lui envoyer des paramètres. Il faut récupé:rer ce qu'elle nous retourne si toutefois elle retourne quelque chose.
En effet, il ya 2 types de fonctions :
- Celles qui ne retournent aucune valeur (bien qu'elles effectuent des actions)
- Celles qui retournent une valeur
Si la fonction ne retourne aucune valeur, rien de plus à faire. La fonction est appelée, fait son travail et on ne lui demande rien de plus.
Par contre, si la fonction retourne une valeur, on la récupère dans une variable comme ceci :
Code PHP
<?php
$volume = calculCube(4);
?>
Sur une ligne comme ceci, il se passe 2 choses, dans l'ordre de droite à gauche :
1. la fonction calculCube
est appelé avec le paramètre 4.
2. le ré:sultat renvoyé par la fonction (lorsqu'elle a terminé) est stocké dans la variable $volume
.
La variable
$volume
aura donc pour valeur 64 après l'exécution de la ligne de code.
 |
A savoir : on peut envoyer en entrée plusieurs paramètres à une fonction, mais en revanche, la fonction ne peut renvoyer qu'une seule valeur.
il existe cependant un moyen de contourner cette limitation en combinant des variables au sein d'un tableau de variables (appelé array) que l'on verra dans un chapitre suivant. |
Les fonctions prêtes à l'emploi de PHP
PHP propose plusieurs centaines de fonctions prêtes à l'emploi.
La documentation de PHP, sur le site officiel, répertorie toutes
les fonctions classées par catégories.
Ces fonctions sont très pratiques et nombreuses. C'est une des forces de PHP : ses fonctions sont excellentes car elles couvrent la quasi-totalité de nos besoins.
Petit aperçu, pelle-mèle :
- Une fonction qui permet de rechercher et de remplacer des mots dans une variable
- Une fonction qui envoie un fichier sur un serveur
- Une fonction qui permet de créer des images miniatures (aussi appelées thumbnails)
- Une fonction qui envoie un mail avec PHP (très pratique pour faire une newsletter !)
- Une fonction qui permet de modifier des images, y écrire du texte, tracer des lignes, des rectangles etc…
- Une fonction qui crypte des mots de passe.
- Une fonction qui renvoie l'heure, la date…
- etc.
Dans la plupart des cas, il faudra indiquer des paramètres à la fonction pour qu'elle sache sur quoi travailler.
Voyons quelques fonctions pour apprendre à les utiliser.
Voyons quelques fonctions qui effectuent des modifications sur des chaînes de caractères et une fonction permettant de récupérer la date.
Traitement des chaînes de caractères
De nombreuses fonctions permettent de manipulre le texte. Quelques exemples pour en montrer l'intérêt.
strlen
Cette fonction retourne la longueur d'une chaînes de caractères, c'est-à-dire le nombre de lettres et chiffres qu'il y a (espaces compris). Exemple :
Code PHP
<?php
$phrase = ´Bonjour ! Je suis une phrase !´;
$longueur = strlen($phrase);
echo ´La phrase ci-dessous comporte ´ . $longueur . ´ caractères :<br />´ . $phrase;
?>
 |
Attention, il se peut que le nombre de caractères soit parfois inexact dû à un bug de PHP dans la gestion des encodages de caractères.
Celà sera corrigé dans les prochaines versions de PHP. |
str_replace
str_replace
remplace une chaîne de caractères par une autre. Exemple :
Code PHP
<?php
$ma_variable = str_replace(´b´, ´p´, ´bim bam boum´);
echo $ma_variable
?>
On a besoin d'indiquer 3 paramètres :
1. La chaîne qu'on recherche. Ici, on recherche les "b" (on aurait pu rechercher un mot aussi).
2. La chaîne qu'on veut mettre à la place. Ici, on met des "p" à la place des "b".
2. La chaîne dans laquelle on doit faire la recherche.
Ce qui donne : "pim pam poum"
str_shuffle
Pour s'amuser à mélanger aléatoirement les caractères de notre chaîne :
Code PHP
<?php
$chaine = ´Cette chaîne va être mélangée !´);
$chaine = str_shuffle($chaine);
echo $chaine
?>
strtolower
strtolower
met tous les caractères d'une chaîne en minuscule.
Code PHP
<?php
$chaine = ´COMMENT ÇA JE CRIE TROP FORT ???´);
$chaine = strtolower($chaine);
echo $chaine
?>
A noter strtoupper
qui fait l'inverse : minuscules en Majuscules.
Récupérer la date
Découvrons la fonction qui renvoie l'heure et la date. Cette fonction peut donner beaucoup d'informations, on va en voir quelques unes. On y reviendra car il est important de savoir manipuler les dates en PHP.
La fonction
date
peut prendre beaucoup de paramètres, en voici quelques-uns :
 |
Attention ! respecter les majuscules/minuscules, c'est important ! |
Paramètre | Description |
H | Heure |
i | Minute |
d | Jour |
m | Mois |
Y | Année |
Si on veut afficher l'année, il faut envoyer le paramètre Y à la fonction :
Code PHP
<?php
$annee = date(´Y´);
echo $annee;
?>
Voici la date complète avec l'heure :
Code PHP
<?php
// Enregistrons les informations de date dans des variables
$jour = date('d');
$mois = date('m');
$annee = date('Y');
$heure = date('H');
$minute = date('i');
// Maintenant on peut afficher ce qu'on a recueilli
echo 'Bonjour ! Nous sommes le ' . $jour . '/' . $mois . '/' . $annee; . 'et il est ' . $heure . ' h ' . $minute ;
?>
 |
Il faut savoir que c'est le serveur qui donne l'heure. |
Créer ses propres fonctions
Il peut arriver que l'on ne trouve pas la fonction dont on a besoin. PHP offre la possibilité de l'écrire.
Découvrons la création de fonctions à travers 2 exemples :
- Afficher un message de bienvenue en fonction du nom
- Calculer le volume d'un cône
1er exemple : dis bonjour au Monsieur
Dire bonjour à chacun de ses visiteurs, c'est fatiguant. Les fonctions sont faites pour nous aider. Regardons ce code :
Code PHP
<?php
$nom = 'Sandra';
echo 'Bonjour, ' . $nom . ' !<br />';
$nom = 'Patrick';
echo 'Bonjour, ' . $nom . ' !<br />';
$nom = 'Claude';
echo 'Bonjour, ' . $nom . ' !<br />';
?>
Créons une fonction qui la fasse toute seule, à notre place :
Code PHP
<?php
function DireBonjour($nom)
{
echo 'Bonjour, ' . $nom . ' !<br />';
}
DireBonjour('Marie');
DireBonjour('Patrice');
DireBonjour('Dudule');
DireBonjour('François');
DireBonjour('Machin');
?>
La nouveauté, c'est la fonction.
Pour créer une fonction, on tape
function
et on lui donne un nom.
Ce qui est particulier, c'est ce qu'on met entre parenthèses : c'est une variable. C'est le
paramètre dont a besoin la fonction pour travailler,
afin qu'elle sache à qui dire bonjour. La fonction doit forcément être appelée avec un paramètre (le nom) sans quoi elle ne pourra pas travailler.
 |
Cette ligne est la seule à ne pas se terminer par un point-virgule.
Il ne s'agit pas d'une instruction mais juste d'une "carte d'identité" de la fonction (son nom, ses paramètres…) |
Ensuite les accolades. Elles permettent de marquer les limites de la fonction. Entre les deux, c'est le contenu de la fonction.
Ici, la fonction contient une seule instruction(echo). Mais on aurait pu en mettre d'avantage ce qui est souvent le cas.
La fonction est créée. Pour faire appel à elle, il suffit d'indiquer son nom, et de préciser ses paramètres entre parenthèses (ici, on doit indiquer le nom).
Sans oublier le point-virgule car il s'agit d'une instruction. Exemple :
Code PHP
<?php
DireBonjour('Marie');
?>
2èmer exemple : calculer le volume d'un cône
La fonction
direBonjour
ne renvoyait aucune valeur, elle se contentait d'afficher des actions (un texte dans ce cas). Voyons maintenant la création d'une fonction qui renvoie une valeur.
Ici, la fonction va servir à faire un calcul : calcul du volume d'un cône. On donne le rayon et la hauteur du cône à la fonction, elle travaille et nous renvoie le volume.
Bien sur, il faut d'abord connaître la formule : rayon * rayon * 3.14 * hauteur (1/3).
Ce qui fait :
Code PHP
<?php
// calcul du volume d'un cône de rayon 5 et de hauteur 2
$volume = 5 * 5 * 3.14 * 2 * (1/3);
echo 'le volume du cône de rayon 5 et de hauteur 2 est : ' . $volume . 'cm<sup>3</sup>';
// calcul du volume d'un cône de rayon 3 et de hauteur 4
$volume = 3 * 3 * 3.14 * 4 * (1/3);
echo 'le volume du cône de rayon 3 et de hauteur 4 est : ' . $volume . 'cm<sup>3</sup>';
?>
On va créer une fonction
VolumeCone
qui va calculer le volume du cône en fonction du rayon et de la hauteur. Cette fonction ne va rien afficher, juste renvoyer le volume que l'on cherche.
Le code ci-dessous, présente 2 nouveautés :
Code PHP
<?php
// Ci-dessous, la fonction qui calcule le volume du cône
function VolumeCone($rayon, $hauteur)
{
$volume = $rayon * $rayon * 3.14 * $hauteur * (1/3); // calcul du volume
return $volume; // indique la valeur à renvoyer, ici le volume
}
$volume = VolumeCone(3, 1);
echo 'le volume d\'un cône de rayon 3 et de hauteur 1 est de ' . $volume;
?>
Dans cette fonction, il y a l'instruction return $volume;
.
Cette instruction indique ce que doit renvoyer la fonction (en l'occurence, on lui demande de nous renvoyer le volume.
On aurait pu tout aussi bien lui demander return 15
, ce qui est idiot, mais à chaque fois elle aurait affiché 15).
La fonction renvoie une valeur, donc on doit la récupérer dans une variable :
Code PHP
<?php
$volume = VolumeCone(3, 1);
?>
Ensuite, on peut afficher ce que contient la variable à l'aide d'une instruction echo
Les possibilités de création de fonctions sont quasi infinies.