il n'est pas normal de charger plusieurs fois un même fichier,
c'est le signe d'un code non adapté ou qui a mal évolué.
inc-A a besoin de inc-C. inc-B a besoin de inc-C. Chacun l'incluent
donc de leur côté. Si X a besoin à la fois de inc-A et inc-B, il est
normal qu'il inclue les deux
Les inclusions en cascade sont un gouffre sans fond qui empêche de
"rentrer" rapidement dans le code. Un fichier "inc-*" ne devrait dans
l'idéal jamais faire d'include.
Bon, maintenant, je sais bien que ce n'est pas toujours possible, que
ce n'est qu'un idéal vers lequel il faut tendre.
Le code utilisé (if defined() return; suivi de define()) est le même
que celui utilisé dans n'importe quel projet C, C++ ou équivalent.
Sauf que dans un projet C, le code en question est déjà compilé, donc
on ne pense même plus aux implications mémoire du bouzin, non ?
Ici, on charge un fichier "inc-*" qui peut être de taille conséquente,
pour finalement ne pas s'en servir.
Bon, OK, finalement il nous faut une fonction include_once ...
if (!function_exists('include_once')) {
function include_once($filename)
{
if (!isset($GLOBALS['_included_files'])) {
$GLOBALS['_included_files'] = array();
}
if (!isset($GLOBALS['_included_files'][$filename])) {
$GLOBALS['_included_files'][$filename] = true;
include $filename;
}
}
}
Tu peux toujours aller dire aux codeurs de la libc que le code n'est
pas adapté ou n'a pas su évoluer... :)))
Je m'en garderais bien ...
-Nicolas