par
Hywan » 18 janv. 2009, 23:59
Sauf que ce que tu demandes est impossible. Si tu modifies ton architecture, tu auras forcément des soucis.
Sinon, il te faut une constante vers les dossiers demander, c'est une solution propre mais longue à mettre place si tu as beaucoup de dossiers. Un truc du genre :
// À la racine, le fichier Path.php
define('DS', DIRECTORY_SEPARATOR);
define('PATH_ROOT', dirname(__FILE__));
define('PATH_MODULE', PATH_ROOT . DS . 'Modules');
define('PATH_OTHER', PATH_ROOT. DS . 'Other');
Et dans ton fichier de module :
require dirname(__FILE__) . '/../Path.php');
require PATH_MODULE . DS . 'EnTete.php');
On voit la limitation, à savoir que tu dois quand même te repérer par rapport au fichier
Path.php. C'est un moindre mal. C'est le mieux que l'on puisse avoir je pense.
Pour ceux qui ne savent pas,
DOCUMENT_ROOT peut peut-être être modifiée par un intrus, on évite de l'utiliser (même si c'est difficilement faisable de la modifier, ça l'est et c'est donc suffisant pour avoir des doutes).
Normalement, quand on construit une application, on évite de modifier l'architecture toutes les deux heures, ça me paraît logique … Sinon, c'est qu'il y a un problème dans ton application.
Sinon, encore une solution, tu peux travailler avec des chemins relatifs mais par groupe de dossiers. C'est à dire : on a à la racine trois dossiers, chacun à des sous-dossiers et tous ces dossiers n'ont pas connaissances des sous-dossiers des autres dossiers à la racine, seulement des sous-dossiers du même dossier. Je m'explique :
Les groupes sont A et B. aaa connaît aac ou aca ou encore ab, mais pas ba ou bca. Tu peux donc travailler en chemin relatif dans A, pareil dans B. Tu peux donc déplacer A et B comme tu veux où tu veux. Le soucis c'est si un sous-dossier de A veut communiquer avec un sous-dossier de B, ils sont alors liés et ton architecture se fige.
T'as saisi le problème ? C'est un problème de logique, rien de plus. Il faut résoudre ce problème d'architecture.
Sauf que ce que tu demandes est impossible. Si tu modifies ton architecture, tu auras forcément des soucis.
Sinon, il te faut une constante vers les dossiers demander, c'est une solution propre mais longue à mettre place si tu as beaucoup de dossiers. Un truc du genre : [php]// À la racine, le fichier Path.php
define('DS', DIRECTORY_SEPARATOR);
define('PATH_ROOT', dirname(__FILE__));
define('PATH_MODULE', PATH_ROOT . DS . 'Modules');
define('PATH_OTHER', PATH_ROOT. DS . 'Other');[/php]
Et dans ton fichier de module : [php]require dirname(__FILE__) . '/../Path.php');
require PATH_MODULE . DS . 'EnTete.php');[/php] On voit la limitation, à savoir que tu dois quand même te repérer par rapport au fichier [i]Path.php[/i]. C'est un moindre mal. C'est le mieux que l'on puisse avoir je pense.
Pour ceux qui ne savent pas, [i]DOCUMENT_ROOT[/i] peut peut-être être modifiée par un intrus, on évite de l'utiliser (même si c'est difficilement faisable de la modifier, ça l'est et c'est donc suffisant pour avoir des doutes).
Normalement, quand on construit une application, on évite de modifier l'architecture toutes les deux heures, ça me paraît logique … Sinon, c'est qu'il y a un problème dans ton application.
Sinon, encore une solution, tu peux travailler avec des chemins relatifs mais par groupe de dossiers. C'est à dire : on a à la racine trois dossiers, chacun à des sous-dossiers et tous ces dossiers n'ont pas connaissances des sous-dossiers des autres dossiers à la racine, seulement des sous-dossiers du même dossier. Je m'explique : [code]A/
aa/
aaa/
aab/
aac/
ab/
ac/
aca/
B/
ba/
bb/
bc/
bca/
etc.[/code]
Les groupes sont A et B. aaa connaît aac ou aca ou encore ab, mais pas ba ou bca. Tu peux donc travailler en chemin relatif dans A, pareil dans B. Tu peux donc déplacer A et B comme tu veux où tu veux. Le soucis c'est si un sous-dossier de A veut communiquer avec un sous-dossier de B, ils sont alors liés et ton architecture se fige.
T'as saisi le problème ? C'est un problème de logique, rien de plus. Il faut résoudre ce problème d'architecture.