PHP: include_path, comment faciliter les inclusions

Dans PHP, il est très fréquent de devoir faire des inclusions de librairies, functions, classes en incluant des fichiers. Le seul “problème” c’est que ces fichiers à inclure ne sont pas toujours dans le même répertoire que le fichier incluant. On peut donc utiliser des chemins relatifs comme ../../dossier/fichier.php. Seulement, si notre fichier incluant changes… il faudras changer tous les chemins des inclusions !

On peux donc utiliser les chemins absolus comme /home/projet/lib/fichier.php. C’est parfait, on peut changer de place le fichier incluant et ça marche toujours ! Seulement, si le dossier contenant les librairies changes, il faudras à nouveau tout modifier.

Dans ce cas, pourquoi le pas créer une constante PATH_LIB par exemple, qui contient le chemin du dossier contenant toutes les librairies ? Si le dossier changes, on changes juste la constante. Certes, c’est une solution pratique.

Néanmoins, il y a encore plus simple ! La directive include_path de PHP permet de spécifier des répertoires d’inclusions “par défaut”. Ce qui permet d’avoir des inclusions du genre PEAR mais pour vos propres librairies ne figurant pas dans le catalogue PEAR. Prenons un exemple concret : toutes vos librairies sont centralisées dans /home/librairies. Voici le contenu de votre directive include_path :

Note: Pour tous les systèmes UNIX, les chemins sont séparés par des “:” (deux points) alors que pour les systèmes Windows, les chemins sont séparés par des “;” (points virgules).

Note: Il y a toujours le chemin “.” qui représente le dossier local de tout fichier PHP. Si ce pseudo-chemin n’est pas présent, vous ne pourrez faire des inclusions que par le biais de chemins absolus.

Ainsi, avec le code suivant, le fichier fichier.php sera inclus depuis le dossier dossier local (sous-répertoire du dossier dans lequel est notre code qui exécute ces lignes) s’il existe, sinon, depuis /home/librairies/dossier. Idem pour le fichier fichier2.php.

Vous remarquez donc que l’ordre des chemins dans la directive include_path compte.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">