Vous êtes ici : Accueil > Archives > Tutoriels > PHP > Les fonctions

< Retour

Les fonctions


En PHP, il faut distinguer deux niveaux de fonctions : les fonctions propres au langage, et les fonctions utilisateur.

Les premi�res sont int�gr�es au langage et aux diff�rentes librairies que l'on peut ajouter � PHP. Les secondes sont d�finies par les utilisateurs au sein d'un script, d'une librairie "maison" ou d'une classe dans le cadre d'un d�veloppement orient� objet (dans ce cas ce sont des m�thodes)...

Fonctions int�gr�es

L�, il y en a pour tout les go�ts ! Par contre, je vous laisserait plut�t consulter la documentation officielle PHP pour plus d'infos, car il y a vraiment beaucoup (trop) de fonctions, je ne peut pas parler de toutes ici ! Mais je suis pas comme �a ! En voici quelques unes !

Fonctions texte
<?php
$chaine = chop( $chaine );
// retire les espaces inutiles � la fin d'une cha�ne de caract�res.

echo strtolower( $chaine ) . "<br />";
// convertit les caract�res en minucules.

$partie = substr( $chaine, 0, 50 );
// extrait d'une cha�ne les 50 premiers caract�res (en partant de z�ro, donc de 0 � 49).

echo htmlentities( $partie );
// convertit les caract�res accentu�s en �quivalents HTML (format '&char;').
?>

Documentation officielle PHP sur les fonctions de traitement des cha�nes de caract�res

Documentation officielle PHP sur les fonctions de traitement des cha�nes de caract�res multi-octales (Unicode, UTF-8, ...)


Fonctions math�matiques et calcul :
<?php
$resultat = ceil( 100/7 );
// arrondi � l'unit� enti�re sup�rieure.
?>

Documentation officielle PHP sur les fonctions math�matiques


Fonctions de date :
<?php
echo date( "d/m/Y" );
// date au format 'jj/mm/aaaa', mais les lettres sont celles de l'anglais (day, month, YEAR)...
?>

Documentation officielle PHP sur les fonctions de date/heure


Fonctions utilisateurs

Afin de vous �viter de copier-coller votre code d'une section � une autre de votre script, le plus inter�ssant est de rendre certaines portions de codes r�utilisables � l'infini. C'est � cela que servent les fonctions.

Syntaxe :

<?php
// d�claration 'simple'
function nom_de_la_fonction([ $parametre [, $parametreX ] ])
{
// corps de la fonction
}

// utilisation, si la fonction retourne une valeur
$variable = nom_de_la_fonction();
// utilisation si la fonction imprime directement le r�sultat
nom_de_la_fonction();
?>

L�, c'est vraiment tr�s simple, tr�s sch�matique, et m�me pas tr�s �vident ! Donc, je vais passer directement aux exemples comment�s.

Tout d'abord, votre fonction doit avoir un nom, qui vous servira � l'appeller quand on aura besoin d'elle. Ne prenez surtout pas de nom qui soit des mots r�serv�s, pour cela utilisez par exemple des noms fran�ais, � quelques exceptions pr�s, vous n'aurez pas de tracas. Par contre, le nom doit �tre unique, vous ne pouvez pas avoir deux fonctions avec le m�me nom (voir plus bas pour le probl�me de r�p�tition...).

Ensuite, vous pouvez passer des param�tres, obligatoires ou optionnels, � votre fonction.

Et enfin, elle peut imprimer directement (avec les fonctions internes echo ou print) le r�sultat, ou renvoyer ce r�sultat avec return de fa�on � le stocker dans une variable...

Exemples :

Code Résultat
<?php
// code simple, imprimer un texte.
function ma_fonction()
{
echo "ce texte est imprim� par la fonction \"ma_fonction\".<br />";
}
// appel
ma_fonction();
?>
ce texte est imprim� par la fonction "ma_fonction".
Code Résultat
<?php
// la fonction re�oit un param�tre...
function dire_bonjour( $a_qui )
{
echo "Bonjour $a_qui&nbsp;!<br />";
}

// le param�tre est pass� en direct
dire_bonjour( "Beno�t" );
// ou sinon par une variable
$personne = "Marc";
dire_bonjour( $personne );
?>
Bonjour Beno�t !
Bonjour Marc !
Code Résultat
<?php
// plusieurs param�tres
function dire_bonjour2( $civil, $prenom, $nom )
{
echo "Bonjour $civil $prenom " . strtoupper( $nom ) . ".<br />";
}

dire_bonjour2( "M.", $personne, "Lathuille" );
?>
Bonjour M. Marc LATHUILLE.
Code Résultat
<?php
// fonction qui retourne un r�sultat
function addition( $a, $b )
{
$c = $a + $b;
return $c;
}

$resultat = addition( 10, 25 );
echo $resultat . "<br />";
echo addition( 7, -12 ) . "<br />";
?>
35
-5
Code Résultat
<?php
// param�tres et valeurs par d�faut
function fonction_x( $obligatoire, $facultative = "1" )
{
$res = $obligatoire * $facultative;
return $res;
}

$resultat_1 = fonction_x( 16 );
echo $resultat_1 . "<br />";
$resultat_2 = fonction_x( 16, 3 );
echo $resultat_2 . "<br />";
?>
16
48

Premi�re chose � propos des param�tres : l'ordre d'appel doit respecter l'ordre de d�finition, c'est tr�s important !

Dans le cas des param�tres 'obligatoires' et 'facultatifs', il est imp�ratif de mettre en premier dans la d�claration les param�tres obligatoires, et seulement ensuite les facultatifs avec leurs valeurs par d�faut. En effet, comme il y a une valeur par d�faut, on n'est pas oblig� de remettre cette valeur dans l'appel de la fonction.

Donc, si vous avez une fonction dont les param�tres sont respectivement fonction( obligatoire, facultatif="valeur", obligatoire ), l'appel devra prendre les 3, m�me s'il y a des valeurs par d�faut, sinon vous aurez une erreur "l'argument n�# de la fonction est manquant". Si la d�claration est dans l'ordre fonction( obligatoire, obligatoire, facultatif="valeur" ), vous pouvez en mettre aussi bien 2 que 3...

Une autre chose ennuyeuse qui peut se produire avec les fonctions : que vous red�clariez une fonction existante, cela affiche un joli message avec une erreur blocquante, qui emp�che la suite du script et les autres portions de code de s'ex�cuter.
Il y a alors deux solutions : soit vous renommez votre fonction utilisateur, soit, si la fonction est pr�sente au cas o� une extension PHP n'est pas disponible (fonction de substitution, c'est souvent le cas lorsque des fonctions ont �t� ajout�es uniquement en PHP 5, des contributeurs �crivent alors des fonctions �quivalentes en PHP 4, et leur donne le m�me nom - il faut donc pr�voir le cas o� la version de PHP soit mise � jour ou si le site migre vers un autre h�bergeur en version plus r�cente de PHP), la « prot�ger » :

<?php
if( !function_exists( "nom_de_le_fonction" ) )
{
function nom_de_le_fonction( $param, $var = "init" )
{
/*
corps de la fonction...
*/

}
}
?>