[php] Include dans un include

Include dans un include [php] - PHP - Programmation

Marsh Posté le 09-04-2007 à 18:25:11    

Bonjour à tous,
 
J'ai organisé mon site avec différents répertoire.
Le problème est que l'include se fait par rapport au répertoire depuis lequel le fichier est inclus et non depuis le répertoire où se trouve le fichier comme en C. Donc, si on veut faire un include d'un fichier qui en inclus un autre, le premier ne marchera que depuis un seul répertoire.
 
Je m'explique :
\index.php
\repA\config.php
\repB\admin.php
\repC\class.php
 
Fichier index.php

Code :
  1. include('./repC/class.php');
  2. ....


 
Fichier admin.php

Code :
  1. include('../repC/class.php');
  2. ....


 
Fichier class.php

Code :
  1. //C'est ici que le problème se pose
  2. // Si l'inclusion se fait depuis index.php, il faudrait mettre :
  3. include('./repA/config.php');
  4. //Et si l'inclusion se fait par admin.php, il faut mettre :
  5. include('../repA/config.php');
  6. ....


 
Je vois plusieurs méthodes pour régler ce problème :
1 - Définir des variables globales définissant les chemins dans chaque fichier (berk)
2 - Définir les chemins en absolu et pas en relatif. Pas très pratique et rajoute de la lourdeur à l'installation.
 
Connaissez vous une méthode propre et pratique pour faire ça en php(5) ?
 
Merci,
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 09-04-2007 à 18:25:11   

Reply

Marsh Posté le 09-04-2007 à 18:51:34    

tu definis le chemin absolu dans une variable , stockée dans un fichier de configuration clairement identifiable
 
et tu utilise cette variable dans tes includes

Reply

Marsh Posté le 09-04-2007 à 19:02:32    

Oui, mais ça veut dire que ce fichier de configuration ne peut pas inclure d'autre fichier.
Et puis si un fichier fait un include de ce fichier de conf, ben ça ne marchera pas si il est lui même inclus dans un autre fichier d'un répertoire différent.
Et ce n'est pas très objet, mais je n'arrive pas à trouver une autre méthode.

 

vw


Message édité par Combi_A_Vendre le 09-04-2007 à 20:06:28
Reply

Marsh Posté le 09-04-2007 à 20:52:22    

le fichier de conf n'inclu rien  
le fichier de conf est a un endroit précis, fixe, facilement localisable par tous les fichiers qui en ont besoins
 
le fichier de conf  est inclu systématiquement au debut du script

Reply

Marsh Posté le 09-04-2007 à 21:00:08    

Ou sinon tu peux utiliser la technique secrète de Bibi :
 
class.php
include(dirname(__FILE__).'/../repA/config.php');

Reply

Marsh Posté le 10-04-2007 à 08:11:18    

flo850 a écrit :

le fichier de conf n'inclu rien  
le fichier de conf est a un endroit précis, fixe, facilement localisable par tous les fichiers qui en ont besoins
 
le fichier de conf  est inclu systématiquement au debut du script


 
Ben oui, mais ce fichier ne pourra pas être inclus dans un fichier qui est lui même inclus dans un autre. Par exemple une classe mère et une classe fille qui sont dans deux répertoires différents.
 
vw

Reply

Marsh Posté le 10-04-2007 à 08:24:05    

Le_nain a écrit :

Ou sinon tu peux utiliser la technique secrète de Bibi :
 
class.php
include(dirname(__FILE__).'/../repA/config.php');


 
ha merci, c'est pas mal ça !

Reply

Marsh Posté le 10-04-2007 à 21:30:21    

En fait, petite explication quand même :
dirname(__FILE__) te ramènes dans le dossier du fichier actuellement parsé. Tu te déplaces donc relativement au fichier courant (actuellement parsé), et le problème disparait :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed