Position actuelle: Accueil> Derniers articles> Comment définir un chemin public via get_include_path () dans une base de code partagée multi-projets

Comment définir un chemin public via get_include_path () dans une base de code partagée multi-projets

gitbox 2025-05-28

Lors du développement de plusieurs projets PHP, nous rencontrons souvent des situations où certains modules ou bibliothèques doivent être partagés entre plusieurs projets. Par exemple, la bibliothèque de vérification, le système de journaux, la gestion de la configuration, etc. Pour éviter une écriture répétée de ces modules dans chaque projet, nous les extrassons généralement dans une base de code distincte, puis les partageons avec plusieurs projets.

Les fonctions GET_INCLUDE_PATH () et set_include_path () nous fournissent un mécanisme de gestion de chemin élégant, ce qui rend le code de partage dans les projets plus flexible et maintenable. Cet article présentera en détail comment utiliser ces fonctions pour réaliser une gestion unifiée des chemins de fichier public dans un environnement multi-projets.

1. Qu'est-ce que l'inclute_path?

include_path est la liste de répertoires par défaut pour PHP pour trouver des fichiers lors de l'exécution inclut , require , include_once et require_once . Vous pouvez afficher le courant inclut_path via get_include_path () , ou ajouter un répertoire personnalisé via set_include_path () .

 echo get_include_path();

La sortie par défaut peut être ceci:

 .:/usr/local/lib/php

Cela signifie que PHP recherchera d'abord le fichier que vous souhaitez inclure dans le répertoire actuel ( . ). Si cela ne peut pas être trouvé, accédez à / usr / local / lib / php pour rechercher.

2. Comment configurer un répertoire de code partagé

Imaginez que nous avons une bibliothèque publique située dans le répertoire / var / partagé / php-lib / du serveur, qui contient plusieurs classes et fonctions partagées, telles que logger.php et validator.php .

Nous espérons que dans chaque projet, nous n'avons pas à nous soucier du chemin absolu vers cette bibliothèque partagée, nous avons juste besoin de le référencer comme suit:

 require_once 'Logger.php';

Pour y parvenir, nous pouvons modifier dynamiquement l'inclusion_path dans le fichier d'entrée de projet:

 $sharedLibPath = '/var/shared/php-lib/';
$currentIncludePath = get_include_path();
$newIncludePath = $sharedLibPath . PATH_SEPARATOR . $currentIncludePath;
set_include_path($newIncludePath);

Désormais, Logger.php peut exiger directement_once dans le projet actuel sans écrire un chemin absolu.

3. Optimiser la gestion du chemin partagé en combinaison avec le chargeur automatique

Si votre projet utilise un mécanisme de chargement automatique (tel que PSR-4 ou PSR-0), vous pouvez cartographier le répertoire partagé dans l'espace de noms et le combiner avec SPL_autoload_register () pour obtenir un chargement automatique.

 spl_autoload_register(function ($class) {
    include $class . '.php';
});

À l'heure actuelle, tant que le fichier de classe existe dans le chemin de partage et que la structure de dénomination et de répertoire est cohérente, elle peut être chargée automatiquement.

Pour améliorer la flexibilité, nous pouvons également encapsuler la gestion du chemin en tant que scripts d'initialisation, comme la création d'un bootstrap.php :

 <?php
// bootstrap.php
$sharedLibPath = '/var/shared/php-lib/';
set_include_path($sharedLibPath . PATH_SEPARATOR . get_include_path());
spl_autoload_register(function ($class) {
    include $class . '.php';
});

Présentez ce fichier à l'entrée de chaque projet:

 require_once '/var/shared/php-lib/bootstrap.php';

4. Accédez à la bibliothèque partagée distante via URL? Utiliser avec prudence

Certains développeurs peuvent penser à charger le code distant directement via des URL, tels que:

 include 'https://gitbox.net/shared/Logger.php';

Bien que cela soit possible dans certains scénarios, il n'est pas recommandé pour des raisons de sécurité et de performance. Le code chargé à distance a le risque d'être falsifié et il est difficile d'assurer la disponibilité et la vitesse. Une meilleure façon consiste à utiliser les sous-modules GIT ou le compositeur pour gérer les dépendances pour intégrer la base de code partagée dans votre projet localement.

Cependant, si vous souhaitez faire une telle référence distante, assurez-vous d'activer_url_include et d'utiliser une source de confiance, telle que:

 ini_set('allow_url_include', 1);
include 'https://gitbox.net/shared/Validator.php';

Encore une fois, cette pratique doit être évité dans les environnements de production.

5. Résumé

En utilisant get_include_path () et set_include_path () , nous pouvons créer un mécanisme de code partagé efficace pour les projets PHP. Il améliore non seulement le taux de réutilisation du code, mais rend également la structure du projet plus claire et maintenable. En configurant rationnellement les chemins et en combinant le chargeur automatique, vous pouvez même réaliser un partage complètement transparent de modules logiques entre plusieurs projets.

Cependant, il devrait y avoir des spécifications claires pour la configuration du chemin unifié. Il est recommandé d'exécuter un script d'initialisation unifié au début de chaque projet et de résumer la configuration du chemin pour éviter les chemins codés durs dans le projet ou s'appuyer sur des structures de répertoire spécifiques. Cela rendra la collaboration multi-projets plus fluide et maintiendra moins de coûts.