Principes de programmation
Fonction
2526 · Dekens Antoine
Les fonctions
Définition
Une fonction permet de réaliser plusieurs le même bout de code, avec un retour de valeur ou non. Cela permet une abstraction procédurale.
Syntaxe
Le mot clé function est utilisé pour définir une nouvelle fonction suivi par un nom qui est arbitraire, c'est nous qui le choisissons. Le nom est suivi d'une ouverture/fermeture de parenthèses et d'une ouverture/fermeture d'accolades'.
<?php
// Définition de la fonction 'multiplication'
function multiplication() {}
?>
Appel de fonction
Définir une fonction n'est que la première étape, il faut ensuite l'appeler. Pour se faire il suffit de noter le nom de la fonction suivit d'une ouverture/fermeture de parenthèses :
<?php
function multiplication() {};
// On appele la fonction "multiplication"
multiplication();
?>
Logique
Pour le moment notre fonction ne fait absolument rien, ajoutons une opération à afficher dans un écho :
<?php
function multiplication() {
// On demande d'afficher le résulat de la multiplication de 10 * 2
echo 10 * 2;
};
// On appele la fonction "multiplication"
// Affiche 20
multiplication();
?>
Usage
L'avantage de définir une fonction, c'est que nous pouvons l'appeler autant de fois que nécessaire et ce peut importe où dans notre code.
On évitera cependant de les définir en bas de notre code, le but d'une fonction est de conceptualiser une logique qui nous sera utile d'utiliser plusieurs fois.
<?php
function multiplication() {
echo 10 * 2;
};
// On appele 4 fois la fonction "multiplication"
// Affiche 20
multiplication();
// Affiche 20
multiplication();
// Affiche 20
multiplication();
// Affiche 20
multiplication();
?>
Paramètres
Notre fonction n'est pas très utile pour le moment, elle retourne toujours la même multiplication. Ce serait plus utile si nous pouvions lui dire quoi multiplier sans devoir réécrire plusieurs fois la même logique.
Heureusement nous pouvons définir un ou plusieurs paramètres séparés par des virgules entre les parenthèses. Ces derniers nous permettront de dynamiser notre fonction :
<?php
// La fonction attend que nous lui passions 2 paramètres
// $a et $b à l'appel de façon à ce qu'elle puisse les utiliser
// dans notre éxécution de fonction.
function multiplication( $a, $b ) {
// Multiplie les paramètres et les affiche avec un "echo"
echo $a * $b;
};
?>
<?php
function multiplication( $a, $b ) {
echo $a * $b;
};
// Nous devons passer les 2 paramètres
// pour que la fonction puisse être éxécutée.
multiplication( 10, 2 ); // Affiche 20
multiplication( 3, 15 ); // Affiche 45
multiplication( 4, 0 ); // Affiche 0
?>
Valeur de retour
Une valeur peut être retourner par une fonction via le mot clé return. Une fois appelé, l'éxécution se termine et le script revient à la ligne appelante de la fonction.
Aucun code situé à l'intérieur d'une fonction et juste en dessous d'un return ne sera éxécuté.<?php
function multiplication( $a, $b ) {
// Notre fonction n'affiche plus le résultat
// de la multiplication mais retourne sa valeur et
// met fin à la fonction.
return $a * $b;
};
// On enregistre la valeur retournée par la fonction
// dans une variable.
$result = multiplication( 10, 3 );
// On peut ensuite l'affichée
echo $result;
// Ou continuer de l'utiliser dans votre script.
// Ici on utilise la valeur qu'on a calculée (30)
// pour refaire une multiplication 30 * 10 = 300
echo multiplication( $result, 10 );
?>
Portée de variable
Une fonction à son propre contexte, rien à l'extérieur de la fonction n'est accessible à l'intérieur de ses accolades par défaut :
Il existe cependant une technique pour rendre une variable extérieur accessible, via le mot clé global.<?php
$a = 10;
function test() {
echo $a;
};
// Retourne une alerte disant que $a
// n'est pas définie
test();
?>
<?php
$a = 10;
function test() {
$a = "Je ne suis pas la même variable";
echo $a;
};
// Affiche la valeur de $a à l'intérieur de notre fonction
test();
?>
Exercices
Exercice A
Écrire une fonction nommée pow qui va calculer le carré d'un nombre passé en paramètre $a. Il faut que vous puissiez l'appelé avec 5 et que cela affiche 25 :
<?php
$powResult = pow( 5 );
echo $powResult; // Affiche 25
?>
Exercice B
En utilisant la fonction de multiplication que nous avons vue plus tôt, faire en sorte de pouvoir changer la puissance du paramètre $a via un nouveau paramètre $b. Voici deux scénarios à résoudre :
Il faut utiliser une boucle dans la fonction pow<?php
// pow doit retouner la valeur de 5 exposant 3 (le cube)
$powResultA = pow( 5, 3 );
// pow doit retourner la valeur de 2 exposant 4
$powResultB = pow( 2, 4 );
echo $powResultA; // Affiche 125
echo $powResultB; // Affiche 16
?>