Les fonctions
En PHP, on n'aime pas avoir à répéter le même code plusieurs fois. Pour répondre à ce problème, nous avons découvert les boucles qui permettent d'exécuter des instructions plusieurs fois. Nous allons ici découvrir un autre type de structure très important à connaître : les fonctions.
Comme les boucles, les fonctions permettent d'éviter d'avoir à répéter du code PHP que l'on utilise souvent. Mais alors que les boucles sont de bêtes machines tout juste capables de répéter 200 fois la même chose, les fonctions sont des robots "intelligents" qui s'adaptent en fonction de ce que vous voulez faire et qui automatisent grandement la plupart des tâches courantes.
Une fonction est une série d'instructions qui effectue des actions et qui retourne une valeur. En général, dès que vous avez besoin d'effectuer des opérations un peu longues dont vous aurez à nouveau besoin plus tard, il est conseillé de vérifier s'il n'existe pas déjà une fonction qui fait cela pour vous. Et si la fonction n'existe pas, vous avez la possibilité de la créer.
Imaginez que les fonctions sont des robots comme celui-ci :
Vous ne savez pas ce qui se passe à l'intérieur de ce robot, mais vous pouvez appuyer sur un bouton pour lui demander de faire quelque chose de précis. Avec les fonctions, c'est le même principe !
Dialogue avec une fonction
Voici le genre de dialogue qu'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 elle va faire des calculs (ici la longueur de l'arête : 4) et la fonction nous retourne en
sortie le résultat : 64.
Grâce à la fonction, vous n'avez pas eu besoin de vous souvenir comment on calcule le volume d'un cube. Bon ici c'était assez simple (il suffisait de faire 4*4*4), mais vous serez souvent amené à faire des opérations de plus en plus complexes et les fonctions vous permettront de ne pas avoir à vous soucier des détails des calculs.
Si vous aviez eu à faire le calcul du volume du cube une seule fois, vous auriez pu chercher dans un livre comment on le calcule (si vous ne vous en souveniez pas

) et écrire à la main le calcul. Mais si vous aviez à le faire 5 fois ? 10 fois ? 100 fois ?
En quoi est-ce que c'est différent des boucles ? Avec les boucles on peut faire répéter le même code plusieurs fois aussi !
Oui, mais les fonctions sont capables de s'adapter en fonction des informations que vous leur envoyez. Par exemple dans notre cas, il suffit d'envoyer la longueur de l'arête du cube à notre fonction pour qu'elle nous retourne le résultat. Ces informations que l'on donne en
entrée à la fonction sont appelées
paramètres (un mot à connaître !).
Les fonctions ne servent qu'à faire des calculs mathématiques ? Je veux juste créer un site web, pas faire des maths !
J'ai choisi un exemple mathématique ici parce que je le trouve simple et parlant, mais dans la pratique on ne passe pas son temps à calculer des logarithmes et des exponentielles quand on crée un site web, je suis d'accord.
Concrètement, les fonctions peuvent permettre de récupérer des informations comme la date et l'heure actuelles, de crypter des données, d'envoyer des emails, de faire des recherches dans du texte, et bien d'autres choses encore !
Les fonctions en PHP
Nous avons jusqu'ici imaginé le dialogue avec une fonction représentée par un robot, ce n'est pas très sérieux.

Retournons aux choses sérieuses et au concret.
Appeler une fonction
En PHP, comment appelle-t-on une fonction ? Par son nom, pardi ! Par exemple :
Code : PHP
La fonction calculCube est une fonction imaginaire, elle n'existe pas (à moins qu'on la crée nous-mêmes). Par conséquent, n'essayez pas d'exécuter ce code PHP chez vous car il ne fonctionnera pas. Lisez simplement pour bien comprendre le fonctionnement, vous aurez ensuite l'occasion de pratiquer plus loin dans ce chapitre.
Comme vous le voyez, j'ai simplement écrit le nom de la fonction, suivi de parenthèses vides, puis de l'inévitable point-virgule. En faisant cela, j'appelle la fonction
calculCube mais je ne lui envoie aucune information, aucun
paramètre.
Certaines fonctions peuvent fonctionner sans paramètres, mais elles sont assez rares. Dans le cas de
calculCube, ça n'a pas de sens de l'appeler sans lui donner la longueur de l'arête du cube pour faire le calcul !
Si on veut lui envoyer un paramètre (que ce soit un nombre, une chaîne de caractère, un booléen), il faut l'écrire entre les parenthèses :
Code : PHP
Ainsi,
calculCube saura qu'elle doit travailler avec le nombre 4.
Souvent, les fonctions acceptent plusieurs paramètres. Vous devez dans ce cas 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", le booléen vrai et le nombre 41,7.
Récupérer la valeur de retour de la fonction
Maintenant que nous savons appeler une fonction et même lui envoyer plusieurs paramètres, il faut récupérer ce qu'elle nous retourne si toutefois elle retourne quelque chose. Il y a en effet 2 types de fonctions :
- Celles qui ne retournent aucune valeur (ça ne les empêche pas d'effectuer des actions)
- Celles qui retournent une valeur
Si la fonction ne retourne aucune valeur, il n'y a rien de plus à faire que dans les codes précédents. La fonction est appelée, fait son travail et on ne lui demande rien de plus.
En revanche, si la fonction retourne une valeur, comme ça devrait être le cas pour
calculCube, on la récupère dans une variable comme ceci :
Code : PHP | <?php
$volume = calculCube(4);
?>
|
Sur une ligne comme celle-ci, il se passe en fait 2 choses, dans l'ordre de droite à gauche :
- La fonction calculCube est appelée avec le paramètre 4.
- 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 cette ligne de code !
Bon à savoir : on peut envoyer en entrée plusieurs paramètres à une fonction comme on l'a vu, mais en revanche la fonction ne peut renvoyer en retour qu'une seule valeur. Il existe un moyen de contourner cette limitation en combinant des variables au sein d'un tableau de variables (appelé array) dont on parlera dans un prochain chapitre.
PHP propose des centaines et des centaines de fonctions prêtes à l'emploi. La documentation de PHP, sur le site web officiel, répertorie toutes
les fonctions classées par catégories.
Ces fonctions sont très pratiques et très nombreuses. En fait, c'est en partie là qu'est la force de PHP : ses fonctions sont vraiment excellentes car elles couvrent la quasi-totalité de nos besoins. J'ai en fait remarqué que, pratiquement à chaque fois que je m'apprêtais à écrire une fonction, celle-ci existait déjà.
Voici un petit aperçu des fonctions qui existent pour vous mettre l'eau à la bouche :
- 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.
Nous allons ici découvrir rapidement quelques fonctions pour vous habituer à les utiliser. Nous ne pourrons jamais toutes les passer en revue (j'ai dit qu'il y en avait des centaines et des centaines !) mais avec l'expérience de ces premières fonctions et la documentation de PHP, vous n'aurez aucun mal à aller plus loin tous seuls.
Nous allons voir quelques fonctions qui effectuent des modifications sur des chaînes de caractères ainsi qu'une fonction qui permet de récupérer la date. Ce sont seulement des exemples destinés à vous habituer à utiliser des fonctions.
Traitement des chaînes de caractères
De nombreuses fonctions permettent de manipuler le texte. En voici quelques-unes qui vont vous montrer l'intérêt des fonctions.
strlen
Cette fonction retourne la longueur d'une chaîne de caractères, c'est-à-dire le nombre de lettres et chiffres qu'il y a (espaces compris). Exemple :
Code : PHP | <?php
$phrase = 'Bonjour les Zéros ! Je suis une phrase !';
$longueur = strlen($phrase);
echo 'La phrase ci-dessous comporte ' . $longueur . ' caractères :<br />' . $phrase;
?>
|
Méfiez-vous, 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. Cela 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 :
- La chaîne qu'on recherche. Ici, on recherche les "b" (on aurait pu rechercher un mot aussi).
- La chaîne qu'on veut mettre à la place. Ici, on met des "p" à la place des "b".
- La chaîne dans laquelle on doit faire la recherche.
Ce qui nous donne "pim pam poum"
str_shuffle
Pour vous amuser à mélanger aléatoirement les caractères de votre 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 CA JE CRIE TROP FORT ???';
$chaine = strtolower($chaine);
echo $chaine;
?>
|
A noter qu'il existe
strtoupper qui fait la même chose en sens inverse : minuscules => majuscules.
Récupérer la date
Nous allons découvrir la fonction qui renvoie l'heure et la date. Il s'agit de
date (un nom facile à retenir, avouez !). Cette fonction peut donner beaucoup d'informations, nous allons en voir quelques-unes seulement ici. Nous y reviendrons plus loin dans ce cours 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 ! Respectez les majuscules/minuscules, c'est important !
| Paramètre |
Description |
| H |
Heure |
| i |
Minute |
| d |
Jour |
| m |
Mois |
| Y |
Année |
Si vous voulez afficher l'année, il faut donc envoyer le paramètre Y à la fonction :
Code : PHP | <?php
$annee = date('Y');
echo $annee;
?>
|
On peut bien entendu faire mieux, voici la date complète et l'heure :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13 | <?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;
?>
|
Et voilà le travail ! On a pu afficher la date et l'heure en un clin d'oeil.

Normalement, quand vous avez cliqué sur "Essayer !", vous avez dû avoir la date et l'heure exactes (n'hésitez pas à essayer chez vous).
Bien que PHP propose des centaines et des centaines de fonctions (j'insiste dessus, mais il faut dire qu'il y en a tellement !), parfois il n'y aura pas ce que vous cherchez et il faudra écrire vous-même la fonction. C'est une façon pratique d'étendre les possibilités offertes par PHP.
Quand écrire une fonction ? En général, si vous effectuez des opérations un peu complexes que vous pensez avoir besoin de refaire régulièrement, il est conseillé de créer une fonction.
Nous allons découvrir 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
C'est peut-être un peu fatigant de dire bonjour à chacun de ses visiteurs non ? Ca serait bien que ça le fasse automatiquement ! Les fonctions sont justement là pour nous aider !
Regardez le code ci-dessous :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12 | <?php
$nom = 'Sandra';
echo 'Bonjour, ' . $nom . ' !<br />';
$nom = 'Patrick';
echo 'Bonjour, ' . $nom . ' !<br />';
$nom = 'Claude';
echo 'Bonjour, ' . $nom . ' !<br />';
?>
|
Vous voyez, c'est un peu fatigant à la longue... Alors nous allons créer une fonction qui le fait toute seule à notre place !
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | <?php
function DireBonjour($nom)
{
echo 'Bonjour ' . $nom . ' !<br />';
}
DireBonjour('Marie');
DireBonjour('Patrice');
DireBonjour('Edouard');
DireBonjour('Pascale');
DireBonjour('François');
DireBonjour('Benoît');
DireBonjour('Père Noël');
?>
|
Alors qu'y a-t-il de différent ici ? C'est surtout en haut qu'il y a une nouveauté : c'est la fonction. En fait, les lignes en haut permettent de définir la fonction (son nom, ce qu'elle est capable de faire etc...). Elles ne font rien de particulier, mais elles disent à PHP : "Une fonction DireBonjour existe maintenant".
Pour créer une fonction, vous devez taper
function (ça veut dire fonction en anglais

). Ensuite, donnez un nom à votre fonction. Par exemple, celle-ci s'appelle
DireBonjour.
Ce qui est plus particulier après, c'est ce qu'on met entre parenthèses : il y a une variable dedans. C'est le
paramètre dont a besoin la fonction pour travailler, afin qu'elle sache à qui elle doit dire bonjour dans notre cas. Notre fonction doit forcément être appelée avec un paramètre (le nom) sans quoi elle ne pourra pas travailler.
Vous avez peut-être remarqué que cette ligne est la seule à ne pas se terminer par un point-virgule. C'est normal, il ne s'agit pas d'une instruction mais juste d'une "carte d'identité" de la fonction (son nom, ses paramètres...)
Ensuite, vous repérez des accolades. Elles permettent de marquer les limites de la fonction. La fonction commence dès qu'il y a un
{ et se termine lorsqu'il y a un
}. Entre les deux, il y a le contenu de la fonction.
Ici, la fonction contient une seule instruction (
echo). J'ai fait simple pour commencer mais vous verrez qu'en pratique une fonction contient plus d'instructions que cela.
Voilà, la fonction est créée, vous n'avez plus besoin d'y toucher. Après, 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). Enfin, il ne faut pas oublier le fameux
; car il s'agit d'une instruction. Par exemple :
Code : PHP | <?php
DireBonjour('Marie');
?>
|
A vous d'essayer ! Créez une page avec cette fonction et dites bonjour à qui vous voulez, vous verrez : ça marche !

(encore heureux :p)
Un conseil pour que vous vous entrainiez sur les fonctions : basez-vous sur mes exemples et essayez de les retoucher petit à petit vous-mêmes pour voir ce que ça donne. Il peut y avoir des fonctions très simples comme des fonctions très compliquées, alors allez-y prudemment.
2ème exemple : calculer le volume d'un cône
Allez on passe à la vitesse supérieure. La fonction
DireBonjour que l'on a créée ne renvoyait aucune valeur, elle se contenter d'afficher des actions (afficher un texte dans le cas présent). Maintenant, nous allons créer une fonction qui renvoie une valeur.
Ici notre fonction va servir à faire un calcul : le calcul du volume d'un cône. Le principe est le suivant : vous donnez le rayon et la hauteur du cône à la fonction, elle travaille et vous renvoie le volume que vous cherchiez.
Bon tout d'abord il faut connaître la formule pour calculer le volume d'un cône. Vous avez oublié comment on fait ?

Il faut connaître le rayon et la hauteur. Le calcul à faire pour trouver le volume est :
rayon * rayon * 3.14 * hauteur * (1/3) (je ne vous demandais pas de le savoir

).
Vous êtes capables de comprendre le code ci-dessous normalement, si vous avez bien suivi dans le chapitre précédent. Seul problème si on a à le faire plusieurs fois, c'est vite répétitif regardez :
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><br />';
// 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><br />';
?>
|
Nous allons donc 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, on veut juste qu'elle nous renvoie le volume qu'on cherche.
Regardez attentivement le code ci-dessous, il 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;
?>
|
Regardez bien la fonction, dedans il y a l'instruction :
return $volume;.
Cette instruction indique ce que doit renvoyer la fonction. Ici la fonction renvoie le volume. Si vous aviez tapé
return 15, ça aurait à chaque fois affiché un volume de 15 (ce qui est un peu débile j'en conviens, mais faites l'essai !).
La fonction renvoit une valeur, donc on doit récupérer cette valeur 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. Il est clair que normalement vous n'allez pas avoir à créer de fonction qui calcule le volume d'un cône (qui est assez fou pour faire ça ?

). Tout ce que je vous demande en fait ici, c'est de comprendre qu'une fonction c'est très pratique et ça peut vous faire gagner du temps.
Accessoirement, si vous comprenez un peu comment fonctionne mon code c'est bien, si vous essayez de créer une ou deux fonctions de test chez vous c'est encore mieux.
Vous en savez suffisamment sur les fonctions ! Il y aurait d'autres choses à apprendre mais vous connaissez les bases.
D'ailleurs en parlant de bases, vous êtes de moins en moins un débutant total en PHP, nous avons bientôt fini de couvrir les bases !
Informations sur le tutoriel