Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor)

Auteur: Mohamed CHINY Durée necessaire pour le cours de Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor) Niveau recommandé pour le cours de Créer des sites Web dynamiques en PHP (PHP Hypertext Preprocessor) Supports vidéo disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Page 12: Les fonctions

Toutes les pages

Créer ses propres fonctions en PHP

En PHP il est possible de créer ses propres fonctions. Les fonctions sont utiles lorsqu'on est amené à répéter le même traitement plusieurs fois. Au lieu de réécrire le code à chaque reprise, on met celui ci dans une fonction qu'on appellera quand on en aura besoin. Même si une fonction répète le même traitement, elle peut changer de comportement d'un appel à un autre en lui passant des arguments différents à chaque fois.

Création et appel d'une fonction

Pour créer une fonction on fait appel au mot clé function comme ceci:
function nomDeLaFonction($arg1,$arg2...){
   CorpsDeLaFonction;
   return $valeurDeRetour;
}
Le mot clé function est suivi du nom de la fonction qui respecte les mêmes règles qu'un nom d'une variable (commence par une lettre ou le caractères souligné et peut contenir des lettres et des chiffres) et ne dois pas correspondre au nom d'une fonction prédéfinie (comme date() ou strlen() par exemple).

La fonction peut ou non recevoir des arguments entre les parenthèses. Entre les accolades on déclare le corps de la fonction qui consiste en un ensemble d'instructions qui s’exécuteront au moment de son appel.

Une fonction peut ou non retourner une valeur (ou plusieurs valeurs dans une variable de type tableau).

Pour appeler une fonction il suffit d'écrier son nom (et la liste des arguments si elle en contient).

Exemple:
<?php
   function daj(){
      echo date("d/m/Y");
   }
?>
Si la fonction daj() est appelée elle affichera la date d'aujourd'hui (par exemple: 07/01/2016). Elle ne reçoit aucun argument et ne retourne aucune valeur.

Pour appeler la fonction daj() il suffit de faire:
<?php
   daj();
?>
Le fait d'évoquer le nom d'une fonction exécute le code qu'elle contient à l'endroit où elle est appelée.
Logiquement, une fonction est appelé après sa création et non pas avant. Mais à partir de PHP4 on peut appeler une fonction avant sa déclaration. C'est principalement parce qu'il s'agit d'un langage compilé.

Portés des variables

Par défaut, une variable déclarée dans une fonction PHP est locale à cette fonction. Elle n'est donc pas reconnue à l'extérieur de celle ci. De même, une variable déclarée en dehors de la fonction n'est pas par défaut accessible depuis l'intérieur.

Exemple:
<?php
   $a="Salut";
   function f(){
      $b=" à tous";
      echo $a;
   }
   f();
   echo $b;
?>
La variable $a déclarée à l'extérieur de la fonction n'est pas reconnue à l'intérieur de celle-ci. Au moment de son appel, la fonction f() essaiera d'afficher la variable locale $a qui n'existe pas. La variable $b initialisée à l'intérieur de la fonction est locale à celle-ci également. Alors rien ne s'affichera avec echo $b;.
Selon la configuration de php.ini, il se possible que des erreurs de notifications disant que les variables $a et $b n'existent pas se déclenchent.
Pour que les variables soient accessibles de partout on va faire appel à la variable $GLOBALS et le mot clé global.

Variable superglobale $GLOBALS

La variable superblobale $GLOBALS est un tableau associatif qui permet d'accéder à une variable globale de n'importe où est quelque soit le contexte, particulièrement de l'intérieur des fonctions. $GLOBALS accepte comme clé la variable à laquelle on veut accéder (dépourvue du symbole $).

Mot-clé global

Par défaut, une variable initialisée à l'intérieur d'une fonction est locale à cette fonction. Si on veut qu'elle soit globale, alors on la déclare avec le mot clé global.

Pour que l'exemple précédent fonctionne comme prévu on doit le modifier en y insérant $GLOBALS et global:
<?php
   $a="Salut";
   function f(){
      global $b;
      $b=" à tous";
      echo $GLOBALS["a"];
   }
   f();
   echo $b;
?>
Ce qui donne:
Salut à tous

Exemple pratique

On souhaite créer une fonction qui converti la date du format SQL au format conventionnel. Par exemple le 1 février 2016 en SQL est représenté 2016-02-01. Cependant on veut l'afficher 01/02/2016.

Voilà le code de la fonction:
<?php
   function dateSQLtoConv($date){
      $tab=explode("-",$date);
      return $tab[2]."/".$tab[1]."/".$tab[0];
   }
   echo dateSQLtoConv("2016-02-01");
?>
Ce qui donne:
01/02/2016
Nous avons éclaté la chaîne de caractères qui représente la date SQL ("2016-02-01") au niveau des caractères "-". Nous obtenons alors un tableau dont les indexes contiennent respectivement les valeurs 2016, 02 et 01. Il suffit d'inverser et concaténer avec le slach pour récupérer la date conventionnelle (01/02/2016).

Les fonctions en vidéo