Je deviens chèvre...
J'ai lu et relu les explications concernant la portée des variables dans différentes situations et je coince sur un truc. Si qq peut m'aider, cela m'évitera de perdre la tête sur ce qui est probablement une c...rie de ma part.
Alors, voilà :
1. Je définis une constante dans un premier fichier appelé parametres.php
2. Dans un second fichier nommé menu.php, je crée un lien de ce type :
Code : Tout sélectionner
<a href="<?php print RACINE; ?>formations/filieres.php">FILIERES</a>
3. Dans une page de mon site, nommée page.php, j'appelle par include les deux fichiers précédents dont j'ai besoin :
Code : Tout sélectionner
include("parametres.php");
<html>blablabla....
<?php include(RACINE."menu.php"); ?>
</html>
(J'ai simplifié pour les balises HTML mais elles y sont toutes, no problem).
Normalement, la constante RACINE devrait être remplacée par sa valeur dans le fichier page.php mais aussi dans le fichier menu.php. Or, dans tous mes tests, le mot RACINE s'affiche en dur à la place de sa valeur dans l'inclusion du fichier menu.php. Tout se passe comme si cette constante n'avait pas la portée suffisante pour être reconnue dans menu.php.
Si je redéclare RACINE comme constante dans page.php, là cela fonctionne. J'avais pourtant cru comprendre qu'un bout de code amené par un include était lu et interprété exactement comme s'il était dans le fichier qui l'a appelé.
Il y a un concept qui m'échappe et qui bien sûr, me fout tout le reste en l'air.
Quelqu'un peut-il m'expliquer ce que je ne pige pas, please ?
Je deviens chèvre... :(
J'ai lu et relu les explications concernant la portée des variables dans différentes situations et je coince sur un truc. Si qq peut m'aider, cela m'évitera de perdre la tête sur ce qui est probablement une c...rie de ma part.
Alors, voilà :
1. Je définis une constante dans un premier fichier appelé parametres.php
[code]define("RACINE","http://www.monsite.com");[/code]
2. Dans un second fichier nommé menu.php, je crée un lien de ce type :
[code]<a href="<?php print RACINE; ?>formations/filieres.php">FILIERES</a>[/code]
3. Dans une page de mon site, nommée page.php, j'appelle par include les deux fichiers précédents dont j'ai besoin :
[code]
include("parametres.php");
<html>blablabla....
<?php include(RACINE."menu.php"); ?>
</html>
[/code]
(J'ai simplifié pour les balises HTML mais elles y sont toutes, no problem).
Normalement, la constante RACINE devrait être remplacée par sa valeur dans le fichier page.php mais aussi dans le fichier menu.php. Or, dans tous mes tests, le mot RACINE s'affiche en dur à la place de sa valeur dans l'inclusion du fichier menu.php. Tout se passe comme si cette constante n'avait pas la portée suffisante pour être reconnue dans menu.php.
Si je redéclare RACINE comme constante dans page.php, là cela fonctionne. J'avais pourtant cru comprendre qu'un bout de code amené par un include était lu et interprété exactement comme s'il était dans le fichier qui l'a appelé.
Il y a un concept qui m'échappe et qui bien sûr, me fout tout le reste en l'air.
Quelqu'un peut-il m'expliquer ce que je ne pige pas, please ?