J'essaie de créer un fichier config.php qui définit une variable globale contenant le chemin d'accès à un répertoire appelé "fichiersprojets". L'idée est que n'importe quel fichier peut pointer sur ce répertoire, peu importe où il se trouve dans l'arborescence de fichiers.
Puis-je utiliser __DIR__
pour cela? Quelqu'un serait-il prêt à me donner un exemple de la façon dont cela pourrait fonctionner? Je pensais à quelque chose comme ce qui suit:
Je veux définir un répertoire ici: dans le fichier /config.php
$projectfiles = __DIR__("projectfiles/")
Ensuite, je veux qu'un fichier de bibliothèque puisse utiliser cette variable dans le fichier /venders/library/generalfunctions.php
include("../../../config.php");
$file = $projectfiles/testfile.php
Suggestions?
__DIR__
est certainement ce que vous recherchez. Utilisez-le pour fournir des chemins relatifs pour les fichiers requis. Je suggère fortement d'utiliser require_once
ou include_once
pour tous les fichiers de bibliothèque.
if( !defined( __DIR__ ) ) define( __DIR__, dirname(__FILE__) );
require_once( __DIR__ . '/../../../config.php');
.
.
.
// you code here
L'utilisation de la première ligne garantit que vous ne rencontrerez aucun problème avec PHP 5.2 et vice-versa. Cela vous permettra d'inclure des fichiers basés sur la structure de répertoires plutôt que sur le script appelé. De nombreux frameworks utilisent plutôt dirname(__FILE__)
, mais il est plutôt inutile de l'exécuter plusieurs fois. Il est préférable de simplement l'ajouter quelque part avec un chèque.
Il semble que l'architecture de cette application soit moins qu'optimale, mais sans en savoir plus, je ne peux pas en parler.
Je suggère de le définir comme une constante afin qu'il ne puisse pas être modifié et qu'il soit disponible quel que soit le champ d'application.
define('PROJECTFILES',__DIR__.'/projectfiles/');
En supposant:
/config.php
/projectfiles/include_me.php
include(PROJECTFILES.'include_me.php');
N'oubliez pas que __DIR__
référencera le répertoire dans lequel se trouve config.php
. Si config.php
est le dossier parent de projectfiles
, la procédure ci-dessus fonctionne.