Informatique


Les fonctions

Pourquoi utiliser des fonctions

Une fonction est un bloc de code qu'on pourra utilser autant de fois que l'on veut et ce n'importe où dans le programme.
Quand on parle de fonction on pense à 2 choses:

  • Déclarer (ou définir) la fonction, au moyen du mot clé function, la déclaration décrit les instructions qui seront exécutées après l'appel de la fonction.
  • Appeler la fonction, en écrivant simplement son nom, permet d'exécuter le bloc d'instructions décrit dans la déclaration de la fonction.

Les fonctions sont préférentiellemnt stocker dans un fichier .php dédié, pour ensuite être incluses dans le script principal:

  • Stocker la (les) fonction(s) dans un fichier particulier
  • Inclure la (les) fonctions, au moyen des fonctions include() ou require()

require() est identique à include() sauf en cas d'erreur: require() produit une erreur fatale de niveau E_COMPILE_ERROR (le script s'arrête), include()n'émettra qu'une alerte E_WARNING, ce qui permet au script de continuer.

Les fonctions qui ne retournent pas de valeur et sans paramètres

Voici une fonction simplissime, elle affiche simplement un message de bienvenue.

  • on utilise le mot clé function suivi de parenthèses, le corps de la fonction est entouré d'accolades
  • la fonction est appelée en écrivant simplement son nom suivi de parenthèses

Démo
<?php
//Définition de la fonction
function accueil()	{
		echo "Bienvnue sur notre site";
	}
//Appel de la fonction
accueil();
?>

Les fonctions qui ne retournent pas de valeur avec paramètre(s)

Voici une fonction simplissime, elle affiche simplement un mesage de bienvenue.

  • la fonction admet maintenant 2 paramètres
  • les paramètres sont des variables, ces variables sont locales à la fonction et son différentes des variables globales (hors fonction)
  • lors de l'appel il y affectation des paramètres par les valeurs envoyées en paramètres dans l'appel
  • l'affectation des paramètres de la fonction se fait dans le même ordre que les paramètres de l'appel
  • une fois nourie, la fonction peut s'exécuter

Démo
<?php
$nom="Jean-Philippe";
$madate=date("d/m/Y",time());
//Définition de la fonction
function accueil($nom,$madate)	{
	echo "Bienvnue sur notre site $nom, nous sommes le $madate";
}
//Appel de la fonction
accueil($nom,$madate);
?>

Les fonctions qui retournent une ou plusieurs valeurs

Cette fois on va affecter à une variable le résultat de la fonction.
Prenons un exemple simple, une fonction qui calcule le factoriel d'un nombre.

  • Le mot clé return permet de renvoyer une valeur de la fonction au script appelant
  • le résultat de la fonction doit être affecté à la variable $fact

Démo
<?php
$val=5;
function facto($val){
	result=1;
	for($i=0;$i<$val;$i++){
		$result=$result * ($val-$i);
		}
	return $result;
	}
$fac=facto($val);	
echo "Factoriel de $val: $fac"
?>

Dans le cas où on veut renvoyer plusieurs valeurs, celle-ci seront stockées dans un tableau.


Déterminer des valeurs par défaut pour les paramètres

La fonction addition admet 2 paramètres auxquels on a affecté une valeur par défaut.

Démo
<?php
$a=2;
$b=3;
function addition($a=0,$b=0){
	return $a+$b;
} 
$res=addition($a,$b);
echo $res."<br>";
$res=addition($a);
echo $res."<br>";
$res=addition($b);
echo $res."<br>";
?>

Les fonctions récursives

Une fonction récursive est une fonction qui s'appelle elle-même.
Prenons un exemple simple, une fonction qui calcule la puissance d'un nombre, par exemple calculons 24.

  • au départ on a $nbr=2, $puissance = 4 et $total = 2
  • 4 > 1 true, on renvoie la fonction avec $puissance décrémenté de 1 (donc 3) et le $total de 2 * 2 = 4
  • 3 > 1 true, on renvoie la fonction avec $puissance décrémenté de 1 (donc 2) et le $total de 4 * 2 = 8
  • 2 > 1 true, on renvoie la fonction avec $puissance décrémenté de 1 (donc 1) et le $total de 8 * 2 = 16
  • 1 > 1 false, on arrête de renvoyer la fonction, on renvoie $total et c'est fini

Démo
<?php
$nbr=2;
$puissance=4;
$total=2; //la valeur de 2exp1
function puissance($nbr, $puissance, $total) 
{ 	
	if ($puissance > 1) {
		 return puissance($nbr, $puissance - 1, $total * $nbr); 
		 }
   return ($total); 
} 
echo "24 = ".puissance($nbr,$puissance,$total);
?>

Variables globales, locales et statiques

Variables globales et variables locales

  • une variable déclarée dans une fonction est locale à cette fonction et n'est donc pas visible dans le reste du script
  • une variable déclarée dans le script précédée du mot clé global reste locale au script et est donc invisible dans les fonctions
  • une variable déclarée dans une fonction précédée du mot clé global est globale et est donc visible partout dans le script

Démo
<h3>Variable déclarée dans une fonction</h3>
<?php 
function mc0(){
	$val=2;
	}
mc0(); 
echo $val;
?> 
<hr>

<h3>Variable globale déclarée dans le script</h3>
<?php 
global $val;
$val=2;
function mc1(){
	echo $val;
}
mc1();
?> 
<hr>
<h3>Variable globale déclarée dans une fonction</h3>
<?php 
function mc2(){
global $val;
$val=2;
}
echo $val;
?> 
Variables statiques

Le mot clé static permet de sauvegarder l'état d'une variable entre les appels de la fonction dans laquelle elle a été déclarée.
La variable $nbr_app dans la fonction compte() permet de demander combien de fois la fonction a été appelée.

Démo
<?php 
function compte() 
{ 
//On rend la variable $nbr_app persistante 
static $nbr_app=0; /*initialisation à 0 uniquement au premier passage!*/
$nbr_app++; 
echo "Contenu de \$nbr_app: $nbr_app <br>";
		
} 
compte();    /*affiche: 1 appel de la fonction*/ 
compte();    /*affiche: 2 appels de la fonction*/ 
compte();    /*affiche: 3 appels de la fonction*/ 
?>