Identification

Identifiant
Mot de passe
Mot de passe oublié ?

Partage de documents

Cours



Sondage

Quelle est votre profession ?
Etudiant / Elève
Enseignant / Pédagogue
Webmestre / Développeur
Journaliste / Blogueur
Autre
 
Comment trouvez-vous le système Manhali ?
Très utile
Utile
Peu utile
Inutile

  
 

Chapitre précédent
Chapitre suivant
Les fonctions
Informations sur le chapitre :
Cours : Langage PHP
 
elhaddioui_ismail
  • Auteur : elhaddioui_ismail
  • Créé le : 18/05/2014 - 11:21
  • E-mail : ismail.elhaddioui
  • Modifié le : 18/05/2014 - 11:39
  • Lu : 1616 fois
  • Réponses correctes d'auto-évaluation : 59.26 %
  • Licence : BY(Paternité) - NC(Pas d'Utilisation Commerciale) - ND(Pas de Modification)
  • Note : 1/62/63/64/65/66/6 (3 Votes : 6/6)
  •  
    • Fonctions utilisateurs

    • Une fonction permet de réutiliser facilement du code PHP. Par exemple si vous devez effectuer la même suite d'opérations à plusieurs endroits de votre code, il est sans doute judicieux de la mettre dans une fonction. Cela vous permet de ne pas dupliquer le code source et d'en faciliter la maintenance.

      • Syntaxe :

      Une fonction se déclare en utilisant le mot clef "function" suivi du nom de la fonction, d'un couple de parenthèses et d'un couple d'accolades. Les parenthèses contiennent la liste des paramètres (de zéro à l'infini). La valeur de retour de la fonction est définie par le mot "return" :

      return 0;

      return $var;

      return TRUE…

      On peut également définir une fonction sans valeur de retour. La syntaxe complète :

      <?php
      function nom_fonction (parametre1, parametre2, parametre3) {
          instruction1 ;
      	instruction2 ;
      	return valeur;
      }
      ?>

      Pour appeler une fonction, on écrit seulement son nom avec les paramètres entre parenthèses :

      ma_fonction1();

      ma_fonction2("coucou",4,2);

      ma_fonction3(14);

      Exemples : définir et d'appeler des fonctions :

      <?php
      // test1 : fonction sans paramètres et sans valeur de retour
      function test1() {
          echo "Salut !";
      }
      // Appeler la fonction test1
      test1(); 
       
      // test2 : fonction avec deux paramètres et la valeur de retour
      function test2($civilite, $nom) {
      	$var = "Bonjour ".$civilite." ".$nom;
      	return $var;
      }
      // Appeler la fonction test2
      $salutation = test2("Mr","Pierre");
      // La fonction renvoie une valeur
      // On doit récupérer cette valeur dans une variable.
      echo "<hr />".$salutation;
      ?>
      • Portée des variables (locale ou globale) :

      La portée d'une variable dépend du contexte dans lequel la variable est définie. Pour la majorité des variables, la portée concerne la totalité d'un script PHP, on dit alors que la portée est globale. Mais, lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction.

      <?php
      function test3() {
          $var1 = 7;
      }
      test3();
      echo $var1; // Erreur, variable $var1 inconnue
      ?>

      Si vous voulez définir ou utiliser des variables globales dans des fonctions, utilisez le mot clé global :

      <?php
      function test3() {
          global $var1; // Déclarer une variable globale
      	$var1 = 7;
      }
      test3();
      echo $var1; // Affiche 7
      ?>
    • Fonctions internes de PHP

    • PHP dispose de nombreuses fonctions et structures standards. Il y a aussi des fonctions qui requièrent des extensions spécifiques de PHP, sans lesquelles vous obtiendrez l'erreur fatale "undefined function". Et il y a des fonctions de base qui sont incluses dans toutes les versions de PHP, telles que les fonctions de chaînes de caractères et les fonctions de variables. Cependant, on peut trouver parfois une fonction qui existe seulement dans les versions récentes de PHP. Heureusement, il existe une méthode pour savoir est ce qu'une fonction existe sur notre serveur PHP ou non !

      • Est-ce que cette fonction existe ?

      On a besoin parfois de vérifier si une fonction existe avant de l'utiliser. Alors, on utilise la fonction function_exists()

      - Exemple :

      La fonction str_replace() sert à remplacer toutes les occurrences d'une chaîne dans un texte par une autre chaîne. Mais cette fonction est sensible à la casse.

      <?php
      $notre_chaine = "<br />Le feu rouge est coloré du ROUGE, ça veut dire que c'est rouge !";
      $remplacer = str_replace("rouge", "vert", $notre_chaine);
      echo $remplacer; // Le feu vert est coloré du ROUGE, ça veut dire que c'est vert !
      ?>

      La 2ème occurrence n'a pas été remplacée parce qu'elle est en majuscule "ROUGE".

      Il existe une version insensible à la casse de str_replace(), c'est str_ireplace(). Alors on peut modifier notre code de cette manière : $remplacer = str_ireplace("rouge", "vert", $notre_chaine);

      Mais le problème c'est que cette fonction a été ajoutée en PHP5, alors notre script ne marchera pas dans les anciens serveurs qui utilisent encore le PHP4. La solution ici est d'utiliser function_exists() :

      <?php
      $notre_chaine = "<br />Le feu rouge est coloré du ROUGE, ça veut dire que c'est rouge !";
      if (function_exists("str_ireplace"))
          $remplacer = str_ireplace("rouge", "vert", $notre_chaine); //PHP5
      else
      	$remplacer = str_ireplace("rouge", "vert", $notre_chaine); //Anciennes versions de PHP
      echo $remplacer; //Le feu vert est coloré du vert, ça veut dire que c'est vert !
      ?>

      Remarque : la fonction function_exists() ne fonctionne pas pour les instructions (les structures de langage) comme : die(), echo(), empty(), exit(), eval(), include(), include_once(), isset(), list(), print(), require(), require_once() et unset().

      • Inclusion des fichiers

      Dans les sites statiques réalisés en HTML, on doit recopier plus de 50% du contenu dans toutes les pages du site, afin d'avoir le même affichage dans toutes les pages du site (l'entête, le menu vertical et horizontal du site, le pied de page…).

      Heureusement, en PHP, on n'a pas besoin de faire ça, on peut facilement écrire les parties qui se répètent dans des fichiers à part et les inclure dans nos pages en utilisant la fonction include() ou require() :

      include("page1.php");

      require("page1.php");

      Ces deux fonctions incluent la page "page1.php" dans le script courant, et sont identiques à une différence près : include() ne renvoie qu'un avertissement si le fichier inclus est introuvable, tandis que require() renvoie une erreur fatale et interrompe tout le script.

      Avant d'inclure un fichier, on peut tester si ce fichier existe, par la fonction file_exists();

      <?php
      if (file_exists("../scripts/mon_fichier.php")){
          include ("../scripts/mon_fichier.php");
      }
      ?>

      Remarque : La notation (../) est utilisée pour se déplacer du dossier courant vers le dossier parent.

      Il existe aussi deux fonctions include_once() et require_once() qui obligent PHP à vérifier si le script demandé a déjà été inclus dans la page courante, et si le code a déjà été inclus, il ne le sera pas une seconde fois. C'est très pratique pour les fichiers qui contiennent les déclarations de fonctions et de classes.

      include_once("page1.php");

      require_once("page1.php");

      - Exemple complet d'un site avec un contenu organisé par include() :

      - Source de : index.php

      <?php
      //**********************
      echo "<hr /> L'en-tête :<br />";
      include ("en_tete.php");
      //**********************
      echo "<hr /> Le menu :<br />";
      include ("menu.php");
      //**********************
      echo "<hr /> Le contenu :<br />";
      if (isset($_GET['page'])){
          $page = $_GET['page'];
      } else $page = "";
      switch($page) {
       case "page1" : include ("page1.php"); break;
       case "page2" : include ("page2.php"); break;
       case "page3" : include ("page3.php"); break;
       default: include ("page_accueil.php");
      }
      //**********************
      echo "<hr /> Le pied de page :<br />";
      include ("pied_page.php");
      ?>

      - Source de : en_tete.php

      <h1><center>Bienvenue sur mon site web !</center></h1>

      - Source de : menu.php

      <center>
      <a href="?page=accueil">Accueil</a> - 
      <a href="?page=page1">Page1</a> - 
      <a href="?page=page2">Page2</a> - 
      <a href="?page=page3">Page3</a>
      </center>

      - Source de : page_accueil.php

      <h2><center><p>Contenu de la page d'accueil</p> </center></h2>

      - Source de : page1.php

      <h2><center><p>Contenu de la page 1</p> </center></h2>

      - Source de : page2.php

      <h2><center><p>Contenu de la page 2</p> </center></h2>

      - Source de : page3.php

      <h2><center><p>Contenu de la page 3</p> </center></h2>

      - Source de : pied_page.php

      <center>copyright mon site 2012</center>

      Vous pouvez télécharger l'exemple complet sur l'utilisation de la fonction include() à partir d'ici : include.zip


    1. Quelle est la bonne instruction pour appeler la fonction : afficher($nom,$age){ echo $nom." ".$age." ans"; }

    2. afficher();
      afficher("John",30);
      afficher("John").afficher(30);
      afficher(30,"John");

    3. Pour définir la valeur de retour d'une fonction, laquelle de ces instructions est incorrecte ?

    4. return 0;
      return 3,4;
      return true;
      return "C'est bon !";

    5. On code maintenant la page index.php qui a le chemin : /documents/scripts/accueil/index.php

      Et on veut ajouter une inclusion de la page contact.php qui a le chemin : /documents/contact/contact.php

      La bonne instruction est :

    6. include ("/documents/contact/contact.php");
      include ("../documents/contact/contact.php");
      include ("../contact/contact.php");
      include ("../../contact/contact.php");

    Chapitre précédent
    Chapitre suivant

     
    InfoNuls 2010-2015 - Powered by Manhali