Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
643 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1714932
Kytrix
Posté le 09-04-2008 à 12:17:57  profilanswer
 

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
mood
Publicité
Posté le 09-04-2008 à 12:17:57  profilanswer
 

n°1714935
sielfried
Posté le 09-04-2008 à 12:26:25  profilanswer
 

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
n°1715401
Kytrix
Posté le 10-04-2008 à 08:39:54  profilanswer
 

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..)

n°1715414
soju
One shot !
Posté le 10-04-2008 à 09:21:11  profilanswer
 

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;

n°1715423
Kytrix
Posté le 10-04-2008 à 09:35:07  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[PHP] script contenu siteFormulaire PHP avec access.
[Résolu][Struts] itération pour créer des liens + identifiants[Résolu][VBA] Ouvrir un fichier dans le même processus
Learning management system en PHPPHP objet, séparer le fond de la forme
Problème template template [RESOLU][résolu] signe opératoire contenu dans une variable ?
PHP POO: Questions existencielle de débutantPHP : générer un fichier PDF côté serveur et l'imprimer côté client
Plus de sujets relatifs à : [PHP][résolu] Include et global -- comportement étrange --


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR