Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2011, 18h06   #1
Membre du Club
 
Inscription : décembre 2003
Messages : 403
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 403
Points : 43
Points : 43
Par défaut Fonction d'initialisation avec des includes

Hello !

Je cherche à factoriser du code récurent, notamment en début de page. Ainsi, je me retrouve toujours avec un certain nombre d'instructions qui sont communes à beaucoup de page : session_start, s'agit-il d'un compte admin, inclusion des fichiers, ...

Ce que j'aimerai est créer une fonction fct_init(), qui prend en paramètre, notamment, un array de path de fichiers à inclure.

Mon problème est que, lorsque je les inclus dans la fonction, ils ne sont plus disponible après l'appel de init()...

Ex :
Code :
1
2
3
4
5
6
7
8
9
 
//debut de page
 
//toto.php contient un tableau $tab
$requires = ['toto.php', 'titi.php'];
 
fct_init(true, true, $requires);
 
echo $tab[0]; //===> erreur, ce tableau est inconnu
Avez-vous une solution simple et propre ?

Merci
benthebest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h15   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
montre ta fonction fct_init
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h25   #3
Membre du Club
 
Inscription : décembre 2003
Messages : 403
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 403
Points : 43
Points : 43
ça ressemble à ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
function fct_init($useSession, $isAdmin, $requires)
{
   if($useSession)
      session_start();
 
  if($isAdmin)
     ...
 
   for($i=0; $i<count($requires); $i++)
      require($requires[$i]);
}
benthebest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h38   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
la porté des variables s’arrête a ta fonction

a rajouter à la fin de ta fonction

Code :
1
2
3
foreach(get_defined_vars() as $name => $value) {
    $GLOBALS[$name] = $value;
}


ps : pour parcourir un array c'est foreach, pas for (dans ton cas) de plus ton for c'est pas correct
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 23h27   #5
Membre du Club
 
Inscription : décembre 2003
Messages : 403
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 403
Points : 43
Points : 43
Merci pour ta réponse (désolé d'avoir mis du temps à répondre ...)

Ça à l'air de fonctionner

Mais j'aimerai essayer de comprendre l'impact de $GLOBALS sur mon code, si le fait d'utiliser cette fct_init() qui utilise ce $GLOBALS partout dans mon code (je n'ai pas encore fait toutes les modifs) risque de mettre la pagaille dans mon code déjà installé ...

Quel serait le risque potentiel ?

Par exemple, est-ce que les variables seront public uniquement pour la page en cours ou pour chaque page (=> risque d'écrasement par exemple) ?

Y aurai t-il une autre solution moins "risquée" ?

Merci
benthebest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 01h05   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
je t'invite a lire cet article

http://php.net/manual/fr/language.variables.scope.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h40.


 
 
 
 
Partenaires

Hébergement Web