Cette fonction affiche simplement ok. Elle ne sera pas exécutée directement parce qu'on ne l'appelle à aucun moment.
<body>
<?
function Test()
{
echo "ok";
}
?>
</body>
Pour l'exécuter, il suffit de l'appeler. Dans l'exemple suivant, je l'appelle une fois avant et une fois après, ça marche les 2 fois ::
<?
Test();
function Test()
{
echo "Je suis dans Test";
}
Test();
?>
Il est tout a fait possible d'appeler une fonction dans une page qui se trouve dans d'autres balises PHP, comme ceci :
<body>
<?
function Test()
{
echo "Je suis dans Test";
}
?>
Je suis dans HTML
<?
Test();
?>
</body>
Même si ça ne parait pas très propre, il est possible d'exécuter du PHP dans la section <HEAD> du fichier HTML. La page suivante affichera "Je suis dans l'entete" sur la page HTML
<html>
<head>
<?
echo "Je suis dans l'entete";
?>
<title>Exercice</title>
</head>
<body>
</body>
</html>
Plus proprement, on pourrait plutôt installer des fonctions PHP dans la section <HEAD>, voire même avant la balise <HTML>:
<html>
<head>
<?
function Test()
{
echo "Je suis dans Test";
}
?>
<title>Exercice</title>
</head>
<body>
<?
Test();
?>
</body>
</html>
La fonction Test n'a pas de paramètre, et pourtant elle est appelée avec un paramètre ("a"), tout se passe sans erreur, le "a" est simplement perdu
<?
function Test()
{
echo "OK";
}
Test("a");
?>
Cette fois, nous appelons Test avec le paramètre ("Michel"), et cettechaîne de caractère est transmise à $UnTexte.
<?
function Test($UnTexte)
{
echo $UnTexte;
}
Test("Michel");
?>
On appelle la fonction Test avec 2 paramètres, alors que Test n'en accepte qu'un. Pas d'erreur signalée, et le 2ème paramètre, part simplement à l'eau !
function Test($UnTexte)
{
echo $UnTexte;
}
Test("Lampe", "bureau");
function Test($PremierTexte,
$DeuxiemeTexte )
{
echo $PremierTexte;
echo $DeuxiemeTexte;
}
Test("Lampe", "bureau");
L'exemple suivant n'utilise pas $Deux :
function Test($Un ,
$Deux , $Trois)
{
echo $Un;
echo $Deux;
echo $Trois;
}
Test("Lampe" , "" ,
"bureau");
Il est toutefois possible d'envoyer moins de paramètres que prévu, si des valeurs par défaut sont prévues.
function Test($Un,
$Deux="Pollux")
{
echo $Un;
echo $Deux;
}
Test("Castor");
Affichage : CastorPollux
function Test($Un,
$Deux="Pollux")
{
echo $Un;
echo $Deux;
}
Test("Castor", "Lampadaire");
Affichage : CastorLampadaire
Il est possible d'envoyer un nombre variable de paramètres à une fonction. La fonction s'écrit dans ce cas avec deux parenthèses vides, comme s'il n'y avait aucun paramètre :
function Test()
{
echo func_num_args();
}
Test ("Table à manger" , FALSE , 557 , "");
// soit 4 arguments
Le mot-clé return permet de retourner des valeurs
Ici, voyez qu'un dit echo Test();, et pas seulement Test(). Ce qui veut dire qu'on affiche avec echo le résultat de la fonction. Mais ici, comme il n'y a pas de return, absolument rien ne s'affiche.
function Test()
{
//Rien ne se passe ici...
}
echo Test();
function Test()
{
return ("ballon");
}
echo Test();
affiche : ballon
Ceci dit, ce n'est pas parce qu'il y a un return dans la fonction qu'on est obligé de l'utiliser. Le code :
function Test()
{
return ("ballon");
}
Test();
N'affiche rien, certes, mais il fonctionne sans la moindre erreur.
function Test()
{
return("Carotte");
return("Poire");
}
echo Test();
Affiche Carotte
function Test($TrucAManger)
{
if ($TrucAManger == "Oignon")
return ("Légume");
else
return ("Fruit");
}
echo Test("Pomme");
Affiche Fruit
Une utilisation courante du return est le retour VRAI ou FAUX. Par exemple :
<HEAD>
<?
function
EstGrand($QuelChiffre)
{
if ($QuelChiffre > 10)
return TRUE;
else
return FALSE;
}
?>
</HEAD>
<BODY>
<?
if (EstGrand(12))
echo "C'est un grand chiffre";
else
echo "C'est un petit chiffre"
?>
</BODY>
Permet d'écrire d'élégantes lignes de code telles que if (EstGrand(12)) au lieu de if (EstGrand(12) == TRUE).
par défaut, tous les arguments sont passés aux fonctions par valeur : C'est à dire que cette valeur ne va pas pouvoir se modifier durablement dans la fonction.
Dans l'exemple suivant, on déclare $Fruit, et on lui dit que c'est égal à Pomme. Quand on appelle Test, on envoie une COPIE de la variable dans le paramètre qui s'appelle AUSSI $UnFruit, mais c'est pas le même :
function Test($UnFruit)
{
$UnFruit = "Banane";
echo $UnFruit; //
Banane
}
$UnFruit = "Pomme";
Test ($UnFruit);
echo $UnFruit; //
Pomme
Cette fois le simple fait d'ajouter le petit signe & devant le paramètre veut dire que c'est apssé PAR REFERENCE : Les variables vont pouvoir se modifier dans la fonction :
function Test(&$UnFruit)
{
$UnFruit = "Banane";
echo $UnFruit; // Banane
}
$UnFruit = "Pomme";
Test ($UnFruit);
echo $UnFruit; // Banane
Un peu plus haut, nous avons vu comment passer un nombre variable de paramètres à une fonction. Une manière un peu similaire de faire serait de passer en paramètre un tableau.Constatez que rien dans le paramètre de Test ne montre qu'il s'agit forcément d'un tableau : En effet, il est bien écrit $UneListe, et pas $UneListe[]! Evidemment, si on envoie autre chose qu'un tableau, la ligne echo $UneListe[2]; va se planter...
function Test($UneListe)
{
echo $UneListe[2];
// Affiche : Cacahuète
}
$Fruit=array("Abricot","Banane","Cacahuète","Pomme");
Test($Fruit);
Remarquons que même les tableaux sont passés par valeur : C'est à dire que même si la fonction change le contenu d'un élément du tableau, ça ne changera PAS dans le tableau original :
function Test($UneListe)
{
echo $UneListe[2]; // Cacahuète
$UneListe[2] = "Arrosoir";
echo $UneListe[2]; // Arrosoir
}
$Fruit=array("Abricot","Banane","Cacahuète","Pomme");
echo $Fruit[2]; //Cacahuète
Test($Fruit);
echo $Fruit[2]; // Cacahuète
Nous avons 2 fonctions : Cuisine(), sans paramètre, et Salon($UnArgumentQuelconque) avec 1 paramètre. Nous avons ensuite une variable $Maison, à laquelle nous assignons un pointeur vers Cuisine(), et nous l'appelons : $Maison();. C'est donc la fonction Cuisine() qui va être exécutée. Ensuite, rien n'empêche d'assigner un pointeur vers une autre fonction avec cette fois 1 paramètre : $Maison = 'Salon'.
function Cuisine()
{
echo "Je suis dans la cuisine";
}
function Salon($UnArgumentQuelconque)
{
echo "Je suis dans le salon avec $UnArgumentQuelconque";
}
$Maison = 'Cuisine';
$Maison();
$Maison = 'Salon';
$Maison('Une petite table');
On peut indifféremment écrire :
$Maison
= 'Cuisine';
$Maison
= Cuisine;
$Maison
= "Cuisine";
Fonction function_exists().
Exemple :
<?
function inutile()
{
}
if(function_exists("inutile"))
echo "existe";
else
echo "n'existe pas";
?>
---