En PHP, on a souvent recours à ce qu’on appelle communément les pseudo frames. Elles permettent de gagner un temps appréciable au niveau de la maintenance et également dans le travail d’intégration.
Il est fort possible d’aller plus loin et d’améliorer considérablement la maintenance, et c’est ce que nous allons voir.
Mise en situation
Rien de mieux qu’un exemple:
Essayons de mettre en place une documentation concernant quelques fonctions PHP. A chaque fonction correspondra une page dans laquelle il y aura une description la concenant.
Afin d’intégrer cette documentation au design général de mon site, j’utilise un système d’inclusion de fichier.
Les pages décrivant les fonctions seront quand à elles stockées dans un sous répertoire includes.
Voici la structure des fichiers:

Méthode répandue
Le plus souvent voici comment les pseudos frames sont géréés:
// Contrôle du paramètre passé via l'URL
if (isset($_GET["page"])) {
switch ($_GET["page"]) {
case "in_array":
$includePage = "in_array.inc.php";
break;
case "glob":
$includePage = "glob.inc.php";
break;
case "str_pad":
$includePage = "str_pad.inc.php";
break;
default :
// Gestion de l'erreur : soit inclusion d'une page par défaut soit message d'erreur
break;
}
}
// Inclusion de la page demandée
include "./includes/" . $includePage; |
Il existe aussi une variante consistant à n’utiliser que des structures de contrôles à base de if
…
Dans les deux cas cela peut devenir vite complexe à gérer surtout si on a un grand nombre de pages à inclure. Aussi voici une technique pour que la quantité de pages ne soit plus un souci.
Quel est le tableau?
Après avoir au préalable adopté une norme pour les noms des pages – ici le nom de la fonction suivi de « .inc.php » – Il nous suffit de lister tous les fichiers répondant au filtre dans le répertoire includes. Les résultats seront alors stockés dans un tableau dans lequel nous aurons la liste de toutes les pages autorisés
Grâce à la fonction glob(), la moitié du chemin est faite. Ensuite il suffit de chercher si la page demandée est présente dans la liste ainsi générée.
define("PATH", "./includes/");
// Tableau contenant les pages autorisées
$tableau = glob(PATH . "*.inc.php");
if (isset($_GET["page"]) && in_array(PATH . $_GET["page"] . ".inc.php", $tableau)) {
$pageInclude = PATH . $_GET["page"] . ".inc.php";
}
else {
$pageInclude = PATH . "default.inc.php";
}
include $pageInclude; |
Grâce à cette méthode vous n’aurez pas à vous soucier du nombre de pages à inclure, il suffira de les nommer selon le masque défini.
Si vous vous sentez l’âme d’un « geek« , vous pouvez toujours écrire le code sous cette forme:
define("PATH", "./includes/");
// Tableau contenant les pages autorisées
include (isset($_GET["page"]) && in_array(PATH . $_GET["page"] . ".inc.php", glob(PATH . "*.inc.php"))) ? PATH . $_GET["page"] . ".inc.php" : PATH . "default.inc.php"; |
Le résultat sera le même mais le tout tient sur deux lignes ::mrgreen.
Ne pas oublier
- Pour voir l’exemple, cliquez ici
- Télécharger l’exemple complet : ici
- Je vous renvoi à ce petit tutorial d’ElMoustiko si vous désirez en savoir plus sur les pseudos frames.
Mise à jour