Dans le développement de projets PHP, l'inclusion des fichiers et la gestion des chemins sont toujours un problème qui doit être soigneusement traité, en particulier lors du passage entre plusieurs environnements de développement (tels que local, test, production), les chemins à code dur rendent souvent le code difficile à maintenir et même à exécuter des erreurs. Pour gérer les chemins de fichier de manière plus flexible, get_include_path () et set_include_path () fournissent une solution élégante.
get_include_path () est une fonction intégrée fournie par PHP pour obtenir la valeur de configuration actuelle include_path. Cette valeur détermine quels répertoires seront recherchés lorsque des fonctions telles que l'inclusion , l'exigence , l'inclusion_once et la recherche requise_once .
echo get_include_path();
Exemple de sortie:
.:/usr/local/lib/php
Cette sortie signifie que PHP recherchera d'abord des fichiers dans le répertoire actuel ( . ), Puis recherchera des fichiers dans / usr / local / lib / php .
Dans différents environnements, la structure du répertoire dans lequel réside le code peut être différente. Par exemple:
Environnement local: / utilisateurs / votre nom / projets / myapp
Test Server: / var / www / test_myapp
Environnement de production: / srv / www / myapp
Si vous écrivez des chemins morts dans le code, cela signifie que vous devez modifier le chemin du fichier à chaque fois que vous déploiez, ce qui est non seulement lourd, mais aussi sujet aux erreurs. En définissant dynamiquement, incluez_path, la configuration du chemin peut être découplée de l'environnement, ce qui réalise une flexibilité plus élevée.
Vous pouvez utiliser set_include_path () pour modifier include_path, qui affecte la façon dont PHP recherche les fichiers.
set_include_path('/path/to/lib');
Vous pouvez également ajouter des chemins au lieu de remplacer le chemin d'origine:
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/lib');
Cela ajoutera un nouveau répertoire de recherche basé sur le chemin existant.
Prenez un fichier de configuration de chargement config.php comme exemple, en supposant que ce fichier est placé dans le répertoire config / dans le répertoire racine du projet. Pour le charger correctement dans n'importe quel environnement, vous pouvez le faire:
// Supposons que nous définissons le chemin du répertoire racine comme une constante
define('BASE_PATH', dirname(__FILE__));
// installation include_path
set_include_path(
get_include_path() . PATH_SEPARATOR . BASE_PATH . '/config'
);
// Chargement du fichier de configuration
require_once 'config.php';
De cette façon, que vous exécutiez ce code localement ou sur le serveur, PHP peut trouver correctement le fichier config.php tant que Base_Path pointe correctement vers le répertoire racine du projet.
Si vous avez plusieurs environnements, vous pouvez définir dynamiquement include_path à l'aide de variables environnementales. Par exemple:
switch (getenv('APP_ENV')) {
case 'development':
set_include_path(BASE_PATH . '/dev_lib');
break;
case 'testing':
set_include_path(BASE_PATH . '/test_lib');
break;
case 'production':
set_include_path(BASE_PATH . '/prod_lib');
break;
default:
set_include_path(BASE_PATH . '/lib');
}
De cette façon garantit que chaque environnement utilise un répertoire de dépendance qui le convient.
Erreur de couture de chemin : utilisez toujours Path_separator pour épisser plusieurs chemins, il l'utilisera automatiquement : ou ; Selon le système d'exploitation.
Erreur d'ordre du chemin de dépendance : PHP recherchera des fichiers dans l'ordre de Inclure_Path pour s'assurer que les chemins avec une priorité plus élevée sont placés devant.
Le chemin est illisible : assurez-vous que le chemin et le fichier ont les droits d'accès corrects.
Le développement de PHP moderne recommande d'utiliser le mécanisme de chargement automatique des compositeurs. Cependant, dans certains anciens projets, get_include_path () est toujours un outil valide. Vous pouvez ajouter le répertoire de bibliothèque tiers pour inclure_path pour permettre au système de charger automatiquement les fichiers de classe:
set_include_path(get_include_path() . PATH_SEPARATOR . BASE_PATH . '/vendor/gitbox.net/lib');
De cette façon, la bibliothèque de classe de gitbox.net peut être facilement introduite sans écrire le chemin complet à chaque fois.
get_include_path () Rend la gestion des chemins de chemin de fichier plus flexible et modulaire. Dans différents environnements de développement, la combinaison de la conception rationnelle de set_include_path () et de la structure du projet peut considérablement améliorer l'efficacité de maintenabilité et de déploiement du code. Pour les projets PHP qui doivent être compatibles avec plusieurs environnements, l'utilisation d'inclus_path est une stratégie pratique et efficace.