
Voici la syntaxe d'une fonction:
function fonc($arg1, $arg2, $arg3, ..., $argn) {
bloc de commandes
return $valeur
}
Une fonction n'a pas besoin d'être déclarée avant d'être utilisée (sauf si vous voulez rester compatible avec PHP 3), du moment qu'elle apparaît dans le script.
Il y a cependant deux exceptions : si la fonction est conditionnelle, c'est à dire déclarée dans un if, ou si la fonction est déclarée dans une autre fonction. Dans le premier cas elle sera inconnue du reste du code tant que la condition du if n'est pas vraie. Dans le second cas elle ne sera connue que
quand la première fonction sera exécutée. Voici un exemple tiré du manuel.
Pour lepremier cas:
<?php
$makefoo = true;
/* Impossible d'appeler foo() ici, car cette fonction n'existe pas.
Mais nous pouvons utiliser bar() */
bar();
if ($makefoo) {
function foo () {
echo "Je n'existe pas tant que le programme n'est pas passé ici.n";
}
}
/* Maitenant, nous pouvons appeler foo() car $makefoo est maintenant vrai */
if ($makefoo) foo();
function bar() {
echo "J'existe dès le début du programme.n";
}
?>
Pour lesecond cas :
<?php
function foo() {
function bar() {
echo "Je n'existe pas tant que foo() n'est pas appelé.n";
}
}
/* Impossible d'appeler bar() ici car il n'existe pas. */
foo();
/* Maintenant, nous pouvons appeler bar(), car l'utilisation de foo() l'a rendu
accessible. */
bar();
?>
On peut passer autant d'arguments que souhaité à une fonction PHP, de tous types. Les arguments sont séparés par des virgules. Par défaut ils sont passés par copie.
<?php
function affiche($msg) {
echo $msg;
}
?>
Il est possible de passer des arguments par référence, on peut donc en changer la valeur à l'intérieur de la fonction. Pour cela on rajoute un « & » devant l'argument. On peut passer ponctuellement une variable par référence en plaçant un « & » devant son nom lors de l'appel de la fonction.
<?php
function modif(&$msg) {
$msg="coucou";
}
$msg="salut";
modif($msg);
echo $msg; // coucou
?>
On peut aussi définir des valeurs par défaut mais ATTENTION, dans la liste des paramètres les valeurs par défaut doivent être en dernier.
<?php
function affiche($nom, $prenom="toto") {
echo "$nom $prenom";
}
?>
Enfin on peut utiliser un nombre variable d'arguments avec les fonctions func_num_args,func_get_arg et func_get_args.
<?php
function foo() {
$numargs = func_num_args();
echo "Nombre d'arguments: $numargsn";
}
foo (1, 2, 3); // affiche 'Nombre d'arguments: 3'
?>
On retourne une valeur avec l'instruction « return ». On peut retourner tout type de valeurs, mais pas plusieurs en même temps. Cependant rien n'empêche dans ce cas de retourner un tableau. Une fonction peut aussi retourner une référence. Dans ce cas elle doit être déclarée avec un « & » devant son nom.
<?php
function carre ($num) {
return $num * $num;
}
echo carre (4); // affiche '16'
?>
En plus des fonctions définies par l'utilisateur PHP propose un grand nombre de fonctions internes couvrant une multitude de domaines. Pour accéder à ces fonctions il faut simplement les appeler par leur nom et que le module correspondant soit compilé avec PHP. Nous verrons dans les chapitres suivants comment en utiliser certaines.