2009-07-28 7 views
0

Comment inclure plusieurs chemins lorsqu'un script PHP est appelé?Inclure plusieurs répertoires dans le script PHP

Par exemple, je dois pointer include_path vers plusieurs répertoires; à l'intérieur de chaque répertoire contenant des sous-répertoires, etc. Mais je veux aussi inclure tous les fichiers php dans les sous-répertoires, afin que mon script PHP maître puisse appeler toutes les méthodes et objets définis dans les répertoires.

Une idée?

Si possible, je voudrais appeler une fonction pour le faire, au lieu de spécifier les répertoires racine et faire une boucle sur tout ce qui se trouve dans les répertoires.

+1

Voir la discussion sous la documentation include_path, il y a plusieurs exemples affichés. – dusoft

Répondre

2

On dirait que vous voulez spécifier chaque répertoire dans votre include_path pour vous permettre de faire juste

require_once("x.php"); // this is in ./foo/bar 
require_once("y.php"); // this is in /docs/utils/ 
require_once("z.php"); // this is in /some/other/include/path 

Dans ce cas, ne pas . Cette idée est pleine de perte, et mauvaise pour la documentation, le débogage et la santé mentale.

Si vous devez, vous devrez écrire une fonction pour explorer récursivement votre répertoire d'inclusion à la main dans le cadre d'un processus d'amorçage, ou le faire à la main.

De toute façon, cela semble être une mauvaise idée et n'est pas une fonctionnalité pour une raison.

+0

+1 pour "c'est une mauvaise idée" –

2

Il est peut-être préférable d'utiliser spl_autoload_register() pour enregistrer un rappel que PHP appellera lorsqu'il ne trouvera pas la classe à laquelle vous essayez d'accéder. Vous pouvez ensuite écrire une fonction pour inclure le fichier correct basé sur le nom. Les bibliothèques telles que PEAR ont tendance à le faire en divisant le nom de la classe par un trait de soulignement, et chaque partie correspond à un répertoire dans son chemin.

Je ne pense pas que vous puissiez obtenir PHP (en incluant un fichier) pour rechercher récursivement le chemin d'inclusion jusqu'à ce qu'il trouve le fichier (sauf si vous écrivez cette logique vous-même - je suppose que vous pourriez écrire des wrappers require(), include() etc., et appelle ceux-ci à la place, mais je ne le ferais pas).

Vous pouvez également analyser récursivement les répertoires et les ajouter au chemin d'inclusion au démarrage de votre script, mais je pense que cela rendrait les fichiers suivants beaucoup plus lents.

0

vous devez séparer plusieurs répertoires par virgule

+2

utilise la constante PATH_SEPARATOR au lieu du point-virgule. seules les fenêtres utilisent le point-virgule pour séparer les chemins. –

Questions connexes