COURS PHP

  Dernière mise à jour effectuée le : Dimanche 10 août 2003    

Accueil | Emplacement du code PHP : Insertion d'un programme externe

Insertion d'un programme externe



Introduction

Le programme PHP que vous avez écrit, peut aussi provenir d'un module externe. J'explique : Au lieu d'écrire votre code PHP à l'intérieur de votre page HTML, comme dit dans la leçon Insertion du code PHP dans la page HTML, vous pouvez placer ce code dans un document externe à votre page HTML et l'appeler lorsque vous en avez besoin.
Cette manière de faire possède plusieurs avantages.

  1. Vous pouvez écrire un programme utilisable par autant de pages HTML que vous désirez sans avoir à écrire ce code à l'intérieur de chaque page (par exemple l'affichage de la date de dernière modification d'un document).
  2. Lorsque vous faites une modification dans ce programme, celle-ci est automatiquement prise en compte par toutes les pages qui utilisent ce programme.
  3. Vous pouvez ainsi vous constituer une petite bibliothèque personnelle de bouts de programmes ou de fonctions et bâtir des programmes importants en jouant avec comme un jeu de "Lego".

Bref. Il y a plein d'avantages à utiliser cette méthode. De plus, ces petits programmes externes, enregistrés sur le serveur avec une extension ".php", vous mettent à l'abri des "pompeurs indésirables" qui voudraient vous piquer votre code source. Quoi que ... PHP étant un univers "open source", pourquoi vouloir cacher son code source alors que l'on profite de celui de toutes celles et de tous ceux qui mettent le leur si gentiment à disposition de tout le monde pour faire avancer le "scmilblick"...
Mais bon. Il y a des cas où c'est indispensable, comme par exemple lorsque vous devez mettre votre mot de passe d'accès à votre base de données MySQL en "dur" dans votre code source pour pouvoir l'ouvrir et y accéder à partir d'un autre programme.

Il existe deux façons de faire : include() et require(). Nous allons les étudier toutes les deux.

Tout d'abord, il faut bien évidemment avoir écrit votre code PHP et l'avoir sauvegardé (enregistré) sur votre disque dur sous un certain nom. Pour les explications qui suivent, on supposera que votre programme à appeler serve à afficher la date de dernière mise à jour d'un document et qu'il s'appelle "AffDateDerMaj.php". C'est un excellent exemple, vu que c'est ce que je fais moi même pour afficher la date de dernière mise à jour sur toutes mes pages.

 



Par include() ;

La syntaxe exacte est la suivante :

include("AffDateDerMaj.php") ;

N'oubliez pas les guillemets ni le point virgule. C'est important !

Ce programme affichant une date à l'écran de l'utilisateur qui regarde mon site, il faut que son appel soit positionné exactement à l'endroit où j'ai l'intention d'afficher la date de dernière mise à jour de mon document. Donc, entre les tags HTML <body> et </body>. Ce qui donne comme structure :

<html>
<head>
<title> .......... </title>
</head>
<body>

<?php
include("AffDateDerMaj.php") ;
?>

</body>
</html>

Dorénavant, quand l'interpréteur PHP lira votre page, il ira chercher le programme "AffDateDerMaj.php" et l'inclura dans votre page pour l'exécuter. Ce qui provoquera l'affichage de la date de dernière mise à jour tout en tête de l'écran de l'utilisateur (puisque c'est la première chose après <body>).

Pas plus compliqué que ça.

Lors du chargement d'un fichier externe, l'interpréteur PHP s'arrête et charge ce qu'il croit être du texte simple. Si ce fichier externe contient un programme PHP exécutable, il faut le dire à l'interpréteur en incluant tout votre code du fichier externe entre les deux balises bien connues maintenant :
<?php

?>
afin qu'il interprète votre code comme un programme et pas seulement comme du texte à afficher bêtement dans la page.

 

 



Par require() ;

C'est exactement la même chose que pour include().
La syntaxe exacte est la suivante :

require("AffDateDerMaj.php") ;

N'oubliez pas les guillemets ni le point virgule. C'est important également!

Ce programme affichant une date à l'écran de l'utilisateur qui regarde mon site, il faut que son appel soit positionné exactement à l'endroit où j'ai l'intention d'afficher la date de dernière mise à jour de mon document. Donc, entre les tags HTML <body> et </body>. Ce qui donne comme structure, la même que précédemment, soit :

<html>
<head>
<title> .......... </title>
</head>
<body>

<?php
require("AffDateDerMaj.php") ;
?>

</body>
</html>

Dorénavant, quand l'interpréteur PHP lira votre page, il ira chercher le programme "AffDateDerMaj.php" et l'inclura dans votre page pour l'exécuter. Ce qui provoquera l'affichage de la date de dernière mise à jour tout en tête de l'écran de l'utilisateur (puisque c'est la première chose après <body>).

Pas plus compliqué que ça.

Lors du chargement d'un fichier externe, l'interpréteur PHP s'arrête et charge ce qu'il croit être du texte simple. Si ce fichier externe contient un programme PHP exécutable, il faut le dire à l'interpréteur en incluant tout votre code du fichier externe entre les deux balises bien connues maintenant :
<?php

?>
afin qu'il interprète votre code comme un programme et pas seulement comme du texte à afficher bêtement dans la page.

 

 



Possibilités

Bien entendu, un fichier externe appelé par include() ou require() peut contenir autre chose que du code PHP.
Ca peut être n'importe quel fichier au format texte simple contenant du bête texte à afficher dans la page à un moment donné, ou encore (et c'est beaucoup plus intéressant), des en-têtes ou pieds de page en HTML. Ainsi, vous pouvez construire vos entêtes ou pieds de pages et faire en sorte qu'ils soient très exactement identiques sur toutes vos pages.
De plus, si vous modifiez l'un de ces fichiers, toutes les pages de votre site seront modifiées d'un seul coup. C'est ce que je fais pour insérer le "copyright" en bas de toutes les pages de ce cours ainsi que pour les marqueurs "E-Stat" et "Xiti".
C'est particulièrement pratique. Tous les ans, pour modifier l'année du copyright, je n'ai qu'un seul fichier à modifier.

On n'est pas limité non plus à un seul include() ou un seul require(). On peut en mettre autant qu'on veut, n'importe où dans la page, les uns au dessous des autres ou éparpillés dans toute la page. Il faut juste faire attention à l'ordre dans lesquels on les appelle selon ce qu'ils contiennent et ce qu'ils sont censés devoir faire. Par exemple si l'un des fichiers appelé contient des constantes utilisables par le programme d'un autre fichier appelé, il vaut évidemment mieux appeler le fichier des constantes avant celui du programme devant les utilser. Question de bon sens. M'enfin quoi...

 



Différences

Il existe bien sûr une légère différence entre include() et require(). Légère mais terriblement importante !

En effet : require(), sera exécuté quoi qu'il arrive. Il suffit que l'interpréteur PHP rencontre cette simple chaîne de caractères pour qu'immédiatement, il aille chercher le fichier et le charge dans la page. Même si require() fait partie (c'est une supposition) de la branche non vérifiée d'une instruction conditionnelle. Par exemple :

if ($langueUtilisateur == "Fr") {
require("TextesEnFrancais.php") ;
}

Hé bien dans ce cas là, même si $langueUtilisateur, n'est pas égal à "Fr", le fichier "TextesEnFrancais.php" sera quand même chargé. Et toc !
Si l'on avait utilisé include(), le fichier n'aurait été chargé que si et seulement si $langueUtilisateur avait été égal à "Fr". Pas dans le cas inverse.

De mon point de vue, il vaut mieux s'en tenir à include() dans tous les cas de figure, et éviter d'utiliser require(), sauf si on sait très exactement ce que l'on veut faire. Et encore... je déconseille fortement.

 



Ce cours est enseigné par Philippe Médan 
dans le cadre de la formation des professionnels de l'INTERNET.
au CREFAC , 14 rue Scandicci, 93000 Pantin. Tél. : 01 48 46 51 99
au GITA-GRETA , Lycée Technologique Diderot 61, rue David D'Angers 75019 Paris Tél. : 01 40 40 36 27
au CESI à l'Ecole des ingénieurs, 116 Av Aristide Briand, BP 57, 92224 Bagneux CEDEX Tél. : 01 45 36 70 00

© Philippe Médan 1999-2003. Tous droits de reproduction réservés pour tous pays.