[PHP][résolu] Include et global -- comportement étrange --

Include et global -- comportement étrange -- [PHP][résolu] - PHP - Programmation

Marsh Posté le 09-04-2008 à 12:17:57    

Bonjour,
 
j'ai un truc assez bizzare : une portée globale de variable qui ne passe plus:
 
j'ai fait un petit exemple pour que ce soit plus simple :
fichier index.php

Code :
  1. <?php
  2. //on inclu le fichier 'include2.php'
  3. insertScript('include2.php');
  4. //on inclu le fichier 'include1.php'
  5. include('include1.php');
  6. function insertScript($file){
  7.  include($file);
  8. }
  9. ?>


 
fichier include1.php:

Code :
  1. <?php
  2. //fichier include 1
  3. $c = 1;
  4. $d = 2;
  5. echo "<br>fichier include 1:<br>";
  6. add();
  7. function add(){
  8.  global $c, $d;
  9.  echo "c+d = ". ($c + $d) . "<br>";
  10. }
  11. ?>


 
fichier include2.php:

Code :
  1. <?php
  2. //fichier include 2
  3. $a = 1;
  4. $b = 2;
  5. echo "<br>fichier include 2:<br>";
  6. add2();
  7. function add2(){
  8.  global $a, $b;
  9.  echo "a+b = ". ($a + $b) . "<br>";
  10. }
  11. ?>


 
et voila ce que j'obtiens:

fichier include 2:
a+b = 0
 
fichier include 1:
c+d = 3


 
peut etre que je m'y prend mal, mon but quand je fait un include c'est d'executer le script php que j'apelle (mais pas forcément d'inclure les fonctions...)
ensuite la fonction insertScript() me permet d'alléger mon code et de mettre l'include dans un div .. ect..
 
voila si quelqu'un a une explication, ou une solution pour faire la meme chose.
 
Merci :)
 
edit: solution sugérée par soju:
mettre au début de mon fichier include2.php:

Code :
  1. global $a, $b;


Message édité par Kytrix le 10-04-2008 à 10:00:10
Reply

Marsh Posté le 09-04-2008 à 12:17:57   

Reply

Marsh Posté le 09-04-2008 à 12:26:25    

Je dirais (sans certitude absolue) que comme t'inclus include2.php dans une fonction (en l'occurence insertScript), tes variables $a et $b prennent pas la portée "global" mais la portée de celle-ci, et donc le mot-clé "global" ne fonctionne pas.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-04-2008 à 08:39:54    

Oui je pense que c'est lié mais je ne comprends pas pourquoi :D
 
par contre j'aimerai bien savoir comment faire !
(sans sacrifier ma fonction qui fait l' include et la fonction dans le script inclus..)

Reply

Marsh Posté le 10-04-2008 à 09:21:11    

normal, un peu de lecture : http://fr.php.net/global
 
plusieurs solutions, soit avec global ou $GLOBALS, par exemple au début de ton fichier include2.php tu ajoutes tout simplement :

Code :
  1. global $a, $b;

Reply

Marsh Posté le 10-04-2008 à 09:35:07    

soju>
 
Merci impecable ça fonctionne !
 
je vais allez lire ton lien ;)
 
par contre j'utilise include surtout pour inclure dans ma page le contenu de la page à inclure, et pas vraiment pour récupérer les fonctions et variables ..
Il n'y a pas d'autre moyen pour faire cela si ?
 
Encore Merci.
 
Kytrix

Reply

Sujets relatifs:

Leave a Replay

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