PHP, chemin relatif ou chemin absolu

A chaque fois que je me lance dans des petits tests en php, je me pose cette question, quel type de chemin je dois utiliser pour faire appel à des scripts extérieurs, je m’en sors tout le temps, ce n’est pas réellement un problème (tant que c’est un développement pour soi), en revanche, je ne trouve pas ça très esthétique.

Chemin relatif

Un chemin relatif fait référence à un emplacement qui est relatif à un répertoire courant. Les chemins relatifs utilisent deux symboles spéciaux, le point (.) et deux pointillés (..), qui correspondent au répertoire courant et au répertoire parent. Deux pointillés sont utilisés pour monter d’un niveau dans la hiérarchie. Un point unique représente le répertoire courant lui-même (définition prise sur ce site).

voici quelques exemples pour illustrer les différentes notations que l’on peut trouver :

  • ../dossier/fichier
  • ./dossier/fichier
  • dossier/fichier

Personnellement, je n’aime pas trop cette manière. On s’y perd rapidement, une modification de place et c’est fini.

De plus, dans le cas de PHP si nous avons un script principal qui appel un second script, il n’y aura pas de soucis mais si le second script en appel un autre, il peut ne pas le trouver, sa référence dans le dossier sera le script principal.

Chemin absolu

Le chemin absolu est le chemin complet en fonction de la racine du disque, pour un système linux, il commencera toujours par un « /« , pour un système Windows, il débutera par une lettre de lecteur comme « C:\« .

L’avantage de celui-ci est qu’il y a peut d’erreur possible, en revanche, le moindre changement de dossier et s’en ai fini. Esthétiquement, ça fait des chemins à rallonge.

Chemin absolu ou chemin relatif

Pour nos développements PHP que devons-nous choisir ? Relatif ou absolue ?

Pour ma part, je prends ni l’un ni l’autre. Je définis en début de script un ou des nouveaux dossiers qui serviront de référence.

En php, on utilise la fonction set_include_path, celle-ci va modifier la valeur de la directive de l’include_path durant l’exécution du script.

On peut bien sur la modifier dans le fichier php.ini, dans apache, avec un .htaccess, mais toutes ses méthodes nécessite d’avoir accès à ses réglages. De plus, pour d’autre projet, il n’est pas nécessaire de le modifier.

Utilisation de set_include_path()

Nous allons prendre comme exemple, cette arborescence :

Le but n’est pas de perdre l’ancien path mais de rajouter les dossiers qui nous intéressent. Les lignes qui suivent sont à inclure dès le début de votre script :

$path = get_include_path(); // Récupération de l'ancien PATH
set_include_path($path.PATH_SEPARATOR."lib".PATH_SEPARATOR."vue"); // ajout des deux nouveaux dossiers
include("includes.php"); // inclusion des fichiers sans rappeler le chemin relatif ou absolu
include("body_inc.php");

Un petit mot pour le séparateur, en fonction des systèmes, il diffère, pour Windows, il s’agit d’un « ; » et pour les autres « : ».

Conclusion

Voilà une méthode plus esthétique et universelle (si le travail est partagé entre plusieurs personnes) de faire appel à des scripts extérieurs.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.