Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox



Faire ses propres fonctions avec PHP : 1ère Partie

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par zebden (Anthony Lombard), le 22 décembre 2007

“En informatique, une fonction est un ensemble d'instructions réalisant une certaine tâche” cf Wikipédia

On introduit chaque nouvelle fonction par le mots-clé function et une fois définie, elle ne pourra en aucun cas être redéfinie, j'entends par là, que l'inclusion de deux fonctions portant le même nom, va provoquer un conflit et donc tout naturellement une erreur.

Alors une fonction peut retourner différents types de variable selon ses besoins, on va alors pouvoir détérminer trois familles de fonctions (ca n'engage que moi) que l'on va pouvoir écrire. à chacune des ses fonctions pour pourra y attribuer de 1 à n paramètres pour les modifier, les tester ou juste les utiliser. Nous parsons notre fonction ce cette manière (en délimitant bien l'(es) instruction(s) par des accolades { } ) .

function nomDeVotreFonction($parametre1, $parametre2, $parametren) {
// Nos instructions 
}
 
/**
nomDeVotreFonction est le nom de la fonction, 
vous pouvez l'appeler aussi bien toto que calculeMoiCa...
*/

Une fonction ne nécessite pas obligatoirement des paramètres et un paramètre peut être défini dans l'écriture de la fonction et devenant ainsi un paramètre non obligatoire. On pourra aussi passer des variables par l'utilisation de variables globales telles que les constantes ou les var provenant des tableaux superglobaux ($_POST, $_GET, $_SESSION, $_SERVER.. etc.) ou bien définir des variables extérieures par l'intermédiaire des mots clés global ou static (chacun ayant un usage différent). Ne vous inquiétez pas, nous allons voir tout ceci à l'aide d'exemples concrets.

Cette première partie parlera donc des fonctions qui retourneront des valeurs non booléennes.

 php
<?php
function bolderMaChaine($chaine = '') {
 
	$chaine = '<strong>' . $chaine . '</strong>'; // Changements
	return $chaine; // Fin de l'instruction
}
 
// Utilisation :
echo bolderMaChaine('Je redige mes propres fonctions'); // retourne une chaine boldee.
 
// Ou
$texte      = 'Je redige mes propres fonctions, et j\'en suis fier !';
$texteBolde = bolderMaChaine($texte);
 
echo $texteBolde; // retourne une chaine boldee.
?>

Notre fonction s'appele ici bolderMaChaine, comme son nom l'indique, elle sert à bolder une chaîne quelconque, nous lui passons comme paramètre la chaîne en question, et si vous avez bien suivi en déclarant $chaine comme paramètre et en lui assignant une valeur vide, nous rendons ce paramètre optionnel bien que sans lui, la fonction n'ai aucun intérêt. %%% Pour renvoyer notre action, nous utilisons le mot-clé return, cela va d'une part terminer l'instruction de la fonction et d'autre part renvoyer notre valeur que l'on pourra soit placée dans une variable, soit l'afficher directement (comme ici) avec echo.

Note : Si vous utiliser directement echo à la place de return, vous afficherez directement la valeur, sans pouvoir l'utiliser, et la fonction continuera de s'exécuter si nous avons encore du code.

On va faire un peu plus complexe (surtout plus utile) , on va établir une fonction pour retourner un code HTML valide W3C pour charger un flash (Adios la balise embed) :

<?php
function loadFlash($animation, $width, $height, $wmode = TRUE) {
 
	$flash  = "\n". '<object type="application/x-shockwave-flash" ';
	$flash .= 'data="' . $anim . '" ';
	$flash .= 'width="' .$width . '" height="' . $height . '">' . "\n";
	$flash .= "\t" . '<param name="movie" value="' . $animation. '" />'. "\n";
	$flash .= "\t" . '<param name="quality" value="high" />'. "\n";
 
	if(TRUE === $wmode) {
		$flash .= "\t" . '<param name="wmode" value="transparent" />'. "\n";
		}
 
	$flash .= '</object>'. "\n";
 
	return $flash;
	}
 
 
/*
// Utilisation
On va loader l'animation "animation.swf" en lui fixant 
une largeur de 400px et une hauteur de 250px
*/
echo loadFlash('./media/flash/animation.swf', '400px', '250px'); 
 
// Exemple d'emploi entrainant une erreur
echo loadFlash('./media/flash/animation.swf'); 
// Va retourner "Undefined $width et $height"
 
// Load d'une animation opaque
echo loadFlash('./media/flash/animation.swf', '400px', '250px', FALSE); 
?>

Si vous avez bien tout saisi jusque la, vous vous apercevrez que les 3 premiers paramètres sont obligatoires et le 4ème non et a comme valeur par défaut TRUE. Cette fonction va donc insérer puis retourner le code HTML parsé, on peut comparer (mais vraiment grossièrement) à un Template (Mais nous y reviendrons donc un prochain article sur l'inutilité d'un moteur de template basique).

Si on regarde la source HTML une fois tout exécuté nous y retrouverons ceci :

<object type="application/x-shockwave-flash" data="./media/flash/animation.swf" 
       width="400px" height="250px">
       <param name="movie" value="./media/flash/animation.swf" />
       <param name="quality" value="high" />
       <param name="wmode" value="transparent" />
</object>

Voyez le gain de temps et de simplicité que peut apporter ce genre de fonctions. Mais je vous accorde la rigidité que ça peut aussi engendrer, par exemple si on veut y ajouter d'autres paramètres, mais je vous laisse le soin de l'agrémenter et de l'optimiser !

à Suivre ... !

* Article original sur http://zebden.fr/index.php?2006/03/21/7-basic-faire-ses-propres-fonctions-avec-php