Qu'est-ce qu'une fonction utilisateur ?
Une fonction est un morceau de code permettant d'automatiser un traitement ou de donner un affichage particulier.
Cela permet également de ré-utiliser un morceau de code à plusieurs reprises.
Imaginez la problématique suivante :
Vous souhaitez calculer votre imposition, cela vous demande plusieurs lignes de calcul, de la réflexion et vous finissez par y parvenir.
Ensuite, vous devrez reprendre ces lignes chaque année puisque l'imposition est annuelle.
Plutôt qu'effectuer un copier/coller, il serait judicieux d'enfermer votre calcul dans une fonction que vous pourrez rappeler à tout moment lorsque vous en aurez envie.
D'autre part, votre situation peut changer, vous vous mariez et avez des enfants, le calcul d'imposition n'est plus le même (car vous avez le droit a des abatements).
Plutôt que modifier le coeur de votre calcul, vous pourriez ajouter ce que l'on appelle des paramètres (ou arguments). Ce sont des informations variables qui peuvent venir modifier le comportement initialement prévu par la fonction ou bien compléter son traitement.
De cette manière votre fonction sera adaptée à tout le monde et à toutes les situations possibles (marié ou célibataire, avec ou sans enfants), pour l'appliquer il faudra juste le préciser au moment d'exécuter la fonction.
A l'inverse des fonctions prédéfinies (qui sont déjà prévues par le langage), c'est à nous d'écrire nos propres fonctions spécifiques (lorsqu'aucune fonction de la documentation peut nous convenir).
Cela pourrait s'appeler fonction développeur.
<?php // déclaration d'une fonction function calculTva() { return 100*1.2; } // exécution de notre fonction echo calculTva() . '
';
120
function
et ensuite nous lui donnons un nom (sans espace, ni accent), ici elle s'appelle : calculTva
.return
est utilisé pour retourner un résultat. Il est en général placé à la fin pour terminer la fonction.
Le site ecommerce (que nous avons pris comme sujet) ne vendra pas que des produits à 100 €.
Nous allons améliorer notre fonction afin de pouvoir effectuer tous les calculs et non pas que sur un nombre fixe de 100 €.
Pour cela nous allons avoir besoin d'un argument entrant (le prix, ici appelée $nombre
) :
<?php // déclaration d'une fonction function calculTva2($nombre) { return $nombre*1.2; } // exécution de notre fonction echo calculTva2(500) . '
'; echo calculTva2(1000) . '
';
600
1200
$nombre
, cette variable pourrait très bien être nommée $x
ou $y
. Peu importe tant qu'il y'a une variable de réception de prévue. J'ai choisi de la nommer $nombre
car c'est plus cohérent avec le sujet.100*1.2
car ce calcul est fixe et donne toujours le même résultat. Cette fois-ci nous allons calculer 20% sur le nombre que nous allons recevoir $nombre*1.2
, et il peut donc changer à tout moment.echo calculTva2(500) . '
';
echo calculTva2(1000) . '
';
calculTva2
pour éviter tout conflit avec la 1ère fonction calculTva
si vous l'aviez gardée présente dans le même fichier.
Dans notre précédente fonction utilisateur, nous pouvions calculer la TVA de nimporte quel nombre mais pas avec nimporte quel taux de TVA.
Nous allons améliorer notre fonction afin de pouvoir effectuer tous les calculs sur tous les nombres et sur tous les taux de TVA
Nous allons avoir besoin de deux arguments entrants :
<?php // déclaration d'une fonction function calculTva3($nombre, $taux) { return $nombre*$taux; } // exécution de notre fonction echo "500 € avec un taux de 5.5 % font : " . calculTva3(500, 1.055) . '
'; echo "1000 € avec un taux de 20 % font : "calculTva3(1000, 1.2) . '
';
527.5
1200
$nombre
et $taux
. Ce qui implique qu'il faudra transmettre 2 informations au moment de l'exécution.$nombre*$taux
. Le nombre et le taux peuvent changer à tout moment.echo calculTva3(500) . '
';
echo calculTva3(1000) . '
';
calculTva3
pour éviter tout conflit avec la 1ère fonction calculTva
et calculTva2
si vous l'aviez gardée présente dans le même fichier.<?php // déclaration d'une fonction function calculTva4($nombre, $taux = 1.2) { return $nombre*$taux; } // exécution de notre fonction echo calculTva4(1500) . '
'; // exécution de la fonction avec 1 seul argument echo calculTva4(800, 1.07) . '
'; // exécution de la fonction avec 2 arguments
1800
856
1.07
vient remplacer le taux par défaut (1.2
) qui ne sera pas appliqué en présence d'un argument choisi.function calculTva4($nombre, $taux = 1.2)En présence du 2e argument (lors de l'exécution) il est prioritaire et le taux par défaut (1.2) n'est pas appliqué.
calculTva4(800, 1.07)
<?php $a = 10 ; $b = 2 ; echo $a + $b . '
'; // affiche 12 (addition 10 + 2) echo $a - $b . '
'; // affiche 8 (soustraction 10 - 2) echo $a * $b . '
'; // affiche 20 (multiplication 10 * 2) echo $a / $b . '
'; // affiche 5 (division 10 / 2) echo $a % $b . '
'; // affiche 0 (reste de la division 10 / 2)
12
8
20
5
0
<?php $a += $b ; // équivaut à $a = $a + $b (ici $a vaut 12, voir ci-dessus)...10+2 $a -= $b ; // équivaut à $a = $a - $b (ici $a vaut 12)...12-2
12
10
$a += $b
est pareil que $a = $a + $b
<?php meteo("hiver", 5); // il est possible d'exécuter une fonction avant qu'elle soit déclarée dans le code. function meteo($saison, $temperature) // 2 arguments attendus { echo "Nous sommes en $saison et il fait $temperature degrés
"; }
Nous sommes en hiver et il fait 5 degrés
<?php meteo("hiver", 1); // il est possible d'exécuter une fonction avant qu'elle soit déclarée dans le code. function meteo($saison, $temperature) // 2 arguments attendus { echo "Nous sommes en $saison et il fait $temperature"; if($temperature > 1 || $temperature < -1) echo " degrés
"; else echo " degré
"; }
Nous sommes en hiver et il fait 1 degré
Nous pouvons remarquer le résultat sans la présence du S au mot degré<?php meteo(30, "été"); // il est possible d'exécuter une fonction avant qu'elle soit déclarée dans le code. function meteo($saison, $temperature) // 2 arguments attendus { echo "Nous sommes en $saison et il fait $temperature"; if($temperature > 1 || $temperature < -1) echo " degrés
"; else echo " degré
"; }
Nous sommes en 1 et il fait été degré
<?php function affichageVille() { $ville = "Lyon"; // variable locale. }On dit que la variable
$ville
est déclarée dans un espace local.<?php function affichageVille() { // ... } $ville2 = "Marseille"On dit que la variable
$ville2
est déclarée dans l'espace global (espace par défaut).<?php function affichageVille() { $ville = "Lyon"; // variable locale. } affichageVille(); echo $ville; // /!\ ne fonctionne pas car cette variable n'est connu qu'à l'intérieur de la fonctionCe code ne fonctionnera pas, voici ce qu'il affichera :
Notice: Undefined variable: ville in C:\wamp\www\php\entrainement.php on line ...
$ville
déclarée à l'intérieur de la fonction.<?php function affichageVille() { $ville = "Lyon"; // variable locale. return $ville; // une fonction peut retourner qqchose (à ce moment là on quitte la fonction) echo 'test'; // /!\ cette ligne ne s'affichera pas car il y a un return avant. } $villeRecu = affichageVille(); echo $villeRecu;
Lyon
Return
permettra lors de l'exécution de la fonction, de retourner le contenu de la variable $ville
(pour en avoir connaissance à l'extérieur de la fonction).return
nous quittons la fonction et la suite du code n'est pas exécutée. Nous ne verrons pas le mot "test" s'afficher dans le résultat.$villeRecu
contiendra le contenu du return de la fonction affichageVile() c'est à dire "Lyon".$villeRecu
soit "Lyon".return
permettra de faire passer des informations déclarées en local dans l'espace global.return
pour préciser ce que votre fonction devra renvoyer !<?php $pays = 'France'; function affichagePays() { echo $pays; // générera une erreur PHP. } affichagePays();
Notice: Undefined variable: pays in C:\wamp\www\php\entrainement.php on line ...
$pays
dans l'espace global (et oui nous sommes bien dans l'espace global puisque nous sommes à l'extérieur d'une fonction).$pays
.affichagePays()
.affichagePays()
, nous aurons une erreur sur la variable $pays
qui apparaitra pour l'interpréteur comme étant indéfinie (undefined).<?php $pays = 'France'; function affichagePays() { global $pays; // importe la variable pays de l'espace global echo $pays; } affichagePays();
France
global
permet d'importer une variable de l'espace global vers l'espace local, en l'ocurrence la variable $pays
.$pays
en argument à notre fonction.global
permet d'importer des informations globales dans un espace local. return
permet de sortir des informations locales dans l'espace global.PHP
1. Intro Php 2. Instruction D'affichage 3. Les Variables Et Constantes 4. Syntaxe Et Concatenation 5. Conditions Et Operateurs 6. Fonctions Predefinies 7. Fonction Utilisateur 8. Les Boucles 9. Inclusion De Fichiers 10. Tableaux Array 11. Classes Et Objets 12. Les Superglobales 13. Lien Get Et Formulaire Post 14. Les Cookies 15. Les Sessions 16. Requete Sql Avec Pdo Et Mysqli 17. Projet Espace De Dialogue 18. Approche De La Securite 19. Realisation D'un Site Web Complet 20. Evaluation