Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Les fonctions utilisateurs en PHP

Il est possible de mémoriser un ensemble d’instructions, parfois complexes, en PHP, grâce au fonction utilisateur.

Il existe déjà des fonctions prédéfinies qui réalisent des taches précises (echo, count()..), mais vous pouvez créer vos propres fonctions. Une fonction est comme un sous-programme dans le programme principal. Elles sont très utilisées dans les bibliothèques PHP et en programmation orientée objet.

La fonction constitue donc un ensemble d’instructions que vous écrivez une seule fois mais qui peut être utilisée plusieurs fois. Il suffira de la rappeler par son nom, ce qui vous dispense de recopier à chaque fois toutes les instructions dans le code.

Une fonction peut même récupérer des paramètres (des éléments nécessaires à son fonctionnement) et retourner des valeurs

Déclaration d’une fonction

Pour déclarer une fonction, utilisez l’opérateur function et donnez lui un nom.

<?php
    function affichage(){
        echo "bonjour";
    }
?>

Le bloc d’instructions se trouve entre les accolades { }.

Exécuter une fonction

Il suffit de l’appeler par son nom.

<?php
    function affichage(){
        echo "bonjour";
    }
    affichage("daniel"); // retournera 'bonjour'
?>

Affichage

bonjour

Les paramètres

Il est possible de transmettre à la fonction des paramètres, qui sont recupéreés entres les parenthèses ()

<?php
    function addition($nb1,$nb2){
        echo $nb1+$nb2;
    }
    addition(3,9);
?>

Affichage

12

Note : ces paramètres peuvent êtres de simples variables mais aussi des tableaux et des objets.

Valeur par défaut

Il est possible de donner une valeur par défaut à ces paramètres. Il suffit de leur affecter une valeur.

<?php
    function division($nb1,$nb2=10){
        echo $nb1/$nb2;
    }
    division(2);
?>

Affichage

0.2

Dans ce cas, le deuxième argument n’étant pas fourni, $nb2 aura la valeur par défaut de 10.

Valeur de retour

Une fonction peut retourner une valeur grâce au mot clé return. A ce moment l’exécution de la fonction sera stoppé, et toutes les autres instructions de cette fonction qui suivront seront ignorées

<?php
    function controlePseudo($pseudo){
        if($pseudo != ""){
            return "pseudo correct";
        }else{
            return "pseudo incorrect";
        }
    }
    echo controlePseudo('Daniel');
?>

Affichage

pseudo correct

Vous pouvez retourner des valeurs à tout moment dans votre script.

<?php
    function addition2($nb1,$nb2){
        return $nb1+$nb2;
    }
    // autres scripts
    echo "voici le résultat de l'addition 25 + 98 : ".addition2(25,98);
?>

Affichage

voici le résultat de l'addition 25 + 98 : 123

Retourner plusieurs valeurs

Si une fonction doit retourner plus valeurs, le plus simple est d’utilser un tableau.

<?php
    function loto(){
        return array(42,13,14,16,34,2);
    }
    print_r( loto() );
?>

 

Affichage

Array ( [0] => 42 [1] => 13 [2] => 14 [3] => 16 [4] => 34 [5] => 2 )

Vous pouvez aussi utiliser la fonction list() pour affecter, en une seule fois, plusieurs variables venant du tableau.

<?php
    function loto2(){
        return array(42,13,14,16,34,2);
    }
    list($nb1,$nb2,$nb3,$nb4,$nb5,$nb6) = loto2();
    echo $nb1;
?>

Affichage

42

La récursivité

Parfois, une fonction a besoin de s’appeler elle-même. C’est souvent le cas pour les calculs mathématiques, comme le calcul du factoriel d’un nombre. Le principe est le suivant : je multiplie un nombre par le même nombre soustrait de 1 et je répète l’opération jusqu’à ce que le dernier nombre vaut 1 – exemple: 6*5*4*3*2*1.

On peut imaginer une fonction qui effectue n*(n-1) et cette fonction sera rappeler plusieurs fois par elle même jusqu’à ce que la dernière valeur vaut 1

<?php
    function factoriel($n){
        if($n==1){
            return 1;
        }
        return $n*factoriel($n-1);
    }
    echo factoriel(3); // retourne 3*2*1
?>

Affichage

6

Visibilité des variables dans une fonction

Les variables n’ont pas toutes la même visibilité dans un script. Une variable déclarée à l’extérieur d’une fonction n’est pas directement accessible dans la fonction. Voir le tutoriel sur les variables.

<?php
    $nb = 2;
    function affiche(){
        echo $nb; // affichera une erreur
    }
?>

Portée globale

Pour rendre une variable accessible dans une fonction, vous avez deux possibilités :

– utiliser l’opérateur global

<?php
    $nb = 2;
    function affiche(){
        global $nb;
        echo $nb; // affichera 2
    }
    affiche();
?>

Affichage

2

– ou utiliser la superglobale $GLOBALS[]

<?php
    $nb = 2;
    function affiche2(){
        echo $GLOBALS['nb']; // affichera 2
    }
    affiche();
?>

Affichage

2

Portée locale

Une variable déclarée dans la fonction ne pourra pas être utilisée à l’extérieur.

<?php
    function affiche(){
        $nb=2;
        echo $nb; // affichera 2
    }
    echo $nb; // affichera une erreur
?>

Portée static

C’est une variable locale mais qui ne sera pas réinitialiser à chaque appel de la fonction. Elle est persistante et conservera ses différentes valeurs à chaque appel de la fonction.

Cette portée est très utile pour la création de compteurs dans une fonction.

<?php
    function direBonjour($prenom){
        static $nbPersonne=0;
        echo "bonjour ".$prenom."<br>";;
        $nbPersonne++;
        echo "je viens de dire bonjour à ".$nbPersonne." personne(s)";
    }
    direBonjour("daniel");
    // affichera 'je viens de dire bonjour à  1 personne(s)'
    echo "<br>";
    direBonjour("roberto");
    // affichera 'je viens de dire bonjour à  2 personne(s)'
?>

Affichage

bonjour daniel
je viens de dire bonjour à 1 personne(s)
bonjour roberto
je viens de dire bonjour à 2 personne(s)

Si vous ne déclarez pas $nbPersonne comme étant static, la fonction retournera ‘je viens de dire bonjour à 1 personne(s)’.

Passage par référence

Lorsque vous copiez des fonctions, il est parfois utile de lier les variables de la fonction à vos variables. Pour que cela soit possible vous pouvez utiliser le passage par référence. Voir le tutoriel sur les variables.

<?php
    $moncompte = 2000;
    function interet($taux,&$compte){
        $compte *= 1+ $taux;
    }
    interet(0.02,$moncompte );
    echo $moncompte; //affichera 2040
?>

 

Affichage

2040

Dans cet exemple la syntaxe permet de lier la variable $compte de la fonction à la variable $moncompte. Les deux variables ont désormais la même référence ce qui veut dire qu’elles pointent la même case mémoire. Toute modification de l’une entraînera la modification de l’autre. Si $compte est modifié par la fonction, alors $moncompte le sera aussi!

Les fonctions variables

Le principe consiste à mémoriser une fonction en tant que valeur d’une variable. Cela peut servir à faire des fonctions de rappel ou des tableaux de fonctions.

En rajoutant des parenthèses à la variable, vous exécuter la fonction qu’elle contient : c’est le concept de fonctions variables.

<?php
    function calculInteret($taux,$compte){
        $compte *= 1 + $taux;
    }
    $funcInteret = 'calculInteret';
    $funcInteret(0.2,20000); // exécute la fonction calculInteret()
?>

Affichage

24000

L’exemple qui suit utilise un tableau qui stocke plusieurs fonctions.

<?php
    function seLever(){
        echo "je me lève <br>";
    }
    function travailler(){
        echo "je travaille <br>";
    }
    function dormir(){
        echo "je dors";
    }
    $maVie = array('seLever','travailler','dormir');
    foreach($maVie as $action){
        $action();
    }
?>

Affichage

je me lève
je travaille
je dors

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »