You are on page 1of 8

Les fonctions sont l’un des outils les plus puissants et les plus pratiques du PHP et

vous devez absolument savoir les manipuler.


Dans cette nouvelle leçon, nous allons donc définir ce que sont les fonctions,
comprendre comment elles fonctionnent et apprendre à créer nos propres fonctions.

Définition des fonctions et fonctions


internes ou prêtes à l’emploi
Une fonction correspond à une série cohérente d’instructions qui ont été créées pour
effectuer une tâche précise. Pour exécuter le code contenu dans une fonction, il va
falloir appeler la fonction.

Nous avons déjà croisé des fonctions dans ce cours avec notamment la
fonction gettype() dont le rôle est de renvoyer le type d’une variable.

La fonction gettype() fait partie des fonctions dites « internes » au PHP ou « prêtes à
l’emploi » tout simplement car sa définition fait partie du langage PHP.

En effet, vous devez bien comprendre ici que la fonction gettype() contient une série
d’instructions qui permettent de définir le type d’une variable.

Comme cette fonction a été créée et définie par le PHP lui-même, nous n’avons pas à
nous soucier des instructions qu’elle contient : nous n’avons qu’à appeler gettype() en
précisant son nom et le nom d’une variable dont on souhaite connaitre le type dans le
couple de parenthèses pour que la série d’instructions qu’elle contient soient exécutées
et pour obtenir le type de notre variable.

Les fonctions prêtes à l’emploi sont l’une des plus grandes forces du PHP puisqu’il en
existe plus de 1000 qui vont couvrir quasiment tous nos besoins. Nous allons en voir
une bonne partie dans la suite de ce cours.

Les fonctions définies par l’utilisateur en


PHP
En plus des fonctions internes, le PHP nous laisse la possibilité de définir nos propres
fonctions. Cela va s’avérer très pratique dans le cas où nous travaillons sur un projet
avec des besoins très spécifiques et pour lequel on va souvent devoir répéter les
mêmes opérations.

Pour utiliser nos propres fonctions, nous allons déjà devoir les définir, c’est-à-dire
préciser une première fois la série d’instructions que chaque fonction devra exécuter
lors de son appel.

Pour déclarer une fonction, il faut déjà commencer par préciser le mot clef function qui
indique au PHP qu’on va définir une fonction personnalisée.

Ensuite, nous allons devoir préciser le nom de notre fonction (sauf dans le cas des
fonctions anonymes que nous étudierons plus tard). Le nom des fonctions va suivre les
mêmes règles que celui des variables, à savoir qu’il devra commencer par une lettre ou
un underscore et ne devra pas être un nom déjà pris par le langage PHP (comme le
nom d’une fonction déjà existante par exemple).

En plus de cela, notez qu’à la différence des variables le nom des fonctions est
insensible à la casse. Cela signifie que l’utilisation de majuscules et des minuscules ne
servent pas à différencier une fonction d’une autre.

Par exemple, si on crée une fonction bonjour(), les notations BONJOUR(), bonJOUR(), etc.
feront référence à la même fonction.

Après le nom de notre fonction, nous devons obligatoirement mentionner un couple


de parenthèses puis ensuite placer les instructions que la fonction devra exécuter lors
de son appel entre des crochets.

Créons immédiatement une première fonction très simple pour voir comment cela
fonctionne en pratique :
Ici, nous créons une fonction qu’on appelle bonjour() dont le rôle est de renvoyer le
message « Bonjour à tous » en utilisant un echo. Bien évidemment, cette fonction n’a
pas grand intérêt ici mais il faut bien commencer par quelque chose pour un jour créer
des choses complexes !

Une fonction ne va pas s’exécuter toute seule ou « automatiquement » lors du


chargement de la page. Au contraire, il va falloir l’appeler quelque part dans le code
pour déclencher son exécution. C’est un autre point fort des fonctions puisque cela
nous permet de n’exécuter certains codes que lorsqu’on le souhaite dans un script.

Pour appeler une fonction à un point dans notre script, il suffit d’écrire son nom suivi
d’un couple de parenthèses. Notez qu’on va pouvoir appeler une fonction autant de
fois qu’on le veut dans un script et c’est ce qui fait le plus grand intérêt des fonctions.

En effet, plutôt que d’avoir à réécrire les instructions dans une fonction à chaque fois,
il suffit de créer une fonction et de l’appeler autant de fois qu’on le souhaite. Cela peut
faire gagner beaucoup de temps de développement et rend le code bien plus
facilement maintenable puisque nous n’avons qu’à éditer la définition de notre
fonction si on souhaite changer quelque chose dans son fonctionnement.

<!DOCTYPE html>
<html>
<head>
<title>Cours PHP & MySQL</title>
<meta charset="utf-8">
<link rel="stylesheet" href="cours.css">
</head>
<body>
<h1>Titre principal</h1>
<?php
function bonjour(){
echo 'Bonjour à tous <br>';
}
bonjour();
bonjour();
bonjour();
?>
<p>Un paragraphe</p>
</body>
</html>

Les paramètres et arguments des fonctions


PHP
Souvent, les fonctions vont avoir besoin d’informations qui leurs sont externes, c’est-
à-dire d’informations qui ne se situent pas dans la définition de la fonction pour
fonctionner correctement.

Par exemple, notre fonction gettype() va avoir besoin qu’on lui fournisse ou qu’on lui «
passe » une variable pour pouvoir déterminer son type.

Les informations qu’on va passer à une fonction sont appelées des arguments. Nous
allons toujours passer les arguments dans les parenthèses de notre fonction. Certaines
fonctions ne vont pas avoir besoin d’argument pour fonctionner, d’autres vont avoir
besoin d’un argument, d’autres encore de deux, etc. Par ailleurs, certains arguments
vont parfois être facultatifs tandis que d’autres seront obligatoires.

Quelles différences entre un paramètre et un argument ? On parlera de paramètre lors


de la définition d’une fonction. Un paramètre sert à indiquer qu’une fonction va avoir
besoin d’un argument pour fonctionner mais ne correspond pas à une valeur effective
: ce n’est qu’un prête nom. Un argument en revanche correspond à la valeur effective
passée à une fonction.

Vous pouvez retenir ici qu’un paramètre correspond à la valeur générale définie dans
la définition d’une fonction tandis qu’un argument correspond à la valeur effective
qu’on va passer à la fonction.

Imaginons par exemple qu’on définisse une fonction dont le rôle est de renvoyer «
Bonjour + un prénom ». Cette fonction va avoir besoin qu’on lui passe un prénom pour
fonctionner correctement.

Dans sa définition, on va donc indiquer le fait que notre fonction va avoir besoin d’une
donnée pour fonctionner en précisant un paramètre entre les parenthèses. On peut
fournir n’importe quel nom ici. La chose importante va être de réutiliser le même nom
dans le code de notre fonction à l’endroit où la fonction s’en sert.

Ensuite, lorsqu’on appelle notre fonction, nous allons lui passer un prénom effectif, soit
en lui passant une variable qui contient un prénom, soit en lui passant directement une
chaine de caractères. La valeur effective va alors ici remplacer le paramètre de la
définition de la fonction et on parle d’argument.

Regardez plutôt l’exemple suivant :

<!DOCTYPE html>
<html>
<head>
<title>Cours PHP & MySQL</title>
<meta charset="utf-8">
<link rel="stylesheet" href="cours.css">
</head>
<body>
<h1>Titre principal</h1>
<?php
$prenom = 'Pierre';
$x = 4;
$y = 5;
function bonjour($p){
echo 'Bonjour ' .$p. '<br>';
}
function addition($p1, $p2){
echo $p1. ' + ' .$p2. ' = ' .($p1 + $p2). '<br>';
}
bonjour($prenom);
bonjour('Mathilde');
addition($x, $y);
addition(1, 1);
?>
<p>Un paragraphe</p>
</body>
</html>
Ici, on crée deux fonctions : une première fonction bonjour() qui va avoir besoin qu’on
lui passe un argument pour fonctionner et une deuxième fonction addition() dont le rôle
va être d’additionner deux nombres et de renvoyer le résultat et qui va donc avoir
besoin qu’on lui fournisse deux nombres pour fonctionner.

Notez qu’on est obligé d’utiliser des parenthèses ici pour calculer la somme de nos
deux variables à cause de la priorité des opérateurs et des règles d’associativité.

En effet ici les opérateurs . et + ont la même priorité et l’associativité se fait par la
gauche. Sans parenthèses, ce serait tout le bloc de gauche qui serait additionné à la
valeur à droite du +. Comme le bloc de gauche est une chaine de caractères, PHP va
essayer de la convertir en nombre pour pouvoir l’additionner.

Ici, il faut savoir que PHP procède de la manière suivante pour la conversion : si la
chaine de caractères commence par un nombre, alors c’est ce nombre qui sera utilisé.
Dans le cas contraire, la valeur 0 sera utilisée.

Un point sur le cours jusqu’ici


Jusqu’à présent, nous avons parlé de variables, d’opérateur, de conditions, de boucles,
de fonctions… Si vous êtes nouveau dans la programmation et n’avez jamais étudié
d’autres langages qui s’exécutent côté serveur, il est fortement probable que vous
soyez un peu perdu à ce niveau du cours.

Je vous rassure : cela est tout à fait normal. J’essaie d’expliquer un maximum et le plus
simplement possible chaque nouvelle notion et de donner le plus d’exemples possibles
concrets mais cela n’est pas toujours évident car la plupart des outils du PHP
nécessitent de connaitre d’autres outils pour être utilisés intelligemment.

L’idée principale à retenir ici est que dans tous les cas personne n’apprend à coder en
quelques jours car il ne suffit pas d’apprendre les différentes notions d’un langage mais
il faut surtout comprendre comment elles fonctionnent indépendamment et entre
elles.

Pas de panique donc : faites l’effort de vous concentrer à chaque leçon, de refaire tous
les exemples que je vous propose et vous allez voir qu’au fur et à mesure qu’on
avancera dans le cours vous allez comprendre de mieux en mieux les notions
précédentes.
Pour cette raison, je vous conseille fortement de faire le cours dans son entièreté au
moins deux fois : le deuxième passage vous permettra de voir chaque notion sous un
nouveau jour puisque vous aurez déjà abordé les notions connexes lors de votre
première lecture.

Par ailleurs, il est possible que vous ne compreniez pas bien l’intérêt des conditions,
des boucles ou des fonctions pour le moment car on ne fait que passer des valeurs
pour obtenir d’autres valeurs. C’est à nouveau tout à fait normal puisque pour le
moment nous définissons nous-mêmes la valeur de nos variables, ce qui enlève tout
l’intérêt de la plupart des exercices.

Cependant, vous devez bien comprendre et vous imaginer que nous allons par la suite
travailler avec des variables dont nous ne connaissons pas les valeurs à priori (comme
par exemple dans le cas où on récupère les données envoyées par nos utilisateurs via
un formulaire). C’est à ce moment là où tout ce que nous avons vu jusqu’à présent va
devenir vraiment intéressant.

You might also like