Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 04/07/2011, 17h17   #1
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut include dans fonction->perd ses variables

Je veux faire une fonction tryInclude qui à présentement la syntaxe suivante

Code :
1
2
3
4
5
6
7
8
9
10
function tryInclude($fileName){
	if (file_exists($_SERVER['DOCUMENT_ROOT'].'/extension/'.$fileName)){
		include $_SERVER['DOCUMENT_ROOT'].'/extension/'.$fileName;
	}
['DOCUMENT_ROOT'].'/fonction/'.$fileName))
	else{
		include $_SERVER['DOCUMENT_ROOT'].'/fonction/'.$fileName;
	}
 
}
Ce que la fonction doit faire:
si un fichier existe dans extension...faire l'include du fichier dans le dossier extension...sinon faire le include avec le fichier dans fonction


Le problème que j'ai est que si j'ai une variable dans la page maitresse et que cette variable est utilisé dans le fichier que tryInclude appele...alors cette variable n'y est plus....

Que doit-je faire pour les variables ne soient pas perdus lors de l'appele de tryInclude.

Merci


EX:
Code :
1
2
3
4
<?
tryInclude('layout_menu-admin.php');//perd ses variables
//include 'extension/layout_menu-admin.php'; //concerve ses variables
?>
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 18h12   #2
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

je ne suis pas sur de comprendre, c'est variables sont de quels types (post,get,session...)? Ou alors tu parles de la variable présente dans ton tryinclude?

tu me fais peur avec ca, utilise plutôt <?php
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 20h39   #3
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut c'est variables sont de quels types (post,get,session...)?

les variables sont des variables php -> $variables

ex: dans index.php ...on a une variable $variable que je veux utiliser dans

layout_menu-admin.php

dans le include $variable existe
mais avec mon tryInclude...$variable n'existe pas

Merci


PS: pourquoi pas <? ?
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 22h10   #4
Membre chevronné
 
Avatar de micetf
 
Homme Fred
Professeur des Ecoles
Inscription : mai 2009
Messages : 503
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Professeur des Ecoles
Secteur : Enseignement

Informations forums :
Inscription : mai 2009
Messages : 503
Points : 701
Points : 701
Bonsoir,

Ne rencontrerais-tu pas un problème de portée des variables ?

Quant aux balises courtes d'ouverture (<?), tu trouveras des explications ICI.
micetf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h30   #5
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut Oui surement un probleme de porter de variable...

C'est bien beau tout ces explications mais le mandat est de régler mon problème avec tryInclude...Comment modifier ma fonction tryInclude pour qu'elle agisse comme un include au niveau des variables...

Merci
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/07/2011, 16h16   #6
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut Est-ce possible?

Est-ce possible ou php ne permet pas ce que je veux?
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/07/2011, 09h20   #7
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
Non PHP ne permet pas de faire cela.
Et d'ailleurs je ne connais pas de langage le permettant pour la même raison de portée de variable.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/07/2011, 09h50   #8
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonjour,

C'est tout à fait possible en portant la variable en global

exemple :

le fichier common.inc.php
Code :
1
2
3
4
<?php
global $mavar; // on passe la variable en global
echo "<h1>test : ".$mavar."</h1>"; 
?>
le fichier test.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head><title>test</title>
<body>
 
<?php
 
$mavar = "Je suis un test";
 
function tryInclude($fileName){
	if (file_exists($_SERVER['DOCUMENT_ROOT'].$fileName)){
		include $_SERVER['DOCUMENT_ROOT'].$fileName;
	}
}
 
tryInclude('common.inc.php');
?>
 
 
</body>
</html>
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h44   #9
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
Oui mais c'est moche et non maintenable...
Car il faut déclarer toutes les variables possibles et inimaginables qui pourront être contenues dans les fichiers qui pourront être inclus...
Autant dire qu'on commence à construire une usine nucléaire.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 11h15   #10
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Citation:
Envoyé par transgohan Voir le message
Oui mais c'est moche et non maintenable
OK,si on oublie les constantes de PHP et les miennes (principalement des références de chemin), je n'utilise quasiment jamais les variables globales...

Mais la question était "PHP en est-il capable ?" il me semble.

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 11h20   #11
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
Je suis d'accord avec toi, mais pour ma part un oui/non n'est pas la meilleure des réponses.
C'est comme répondre "Oui il est possible de te baigner dans un bain d'acide".
Cela mérite du détails. ^^
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 20h59   #12
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut Solution possible?

Peut-on récupérer tout les variables non-global et les mettre dans un tableau que l'on passe à la fonction tryInclude à la fin on déctruit ces valeurs?
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 21h24   #13
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
perso, j'enregistrerais dans des variables de session.
Code :
<?php $_SESSION['mavariable'] = $mavariable; ?>
De cette façon, on la récupère où et quand on veut...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/07/2011, 21h51   #14
Invité de passage
 
Homme Dominic
Développeur Web
Inscription : juin 2011
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Dominic
Localisation : Canada

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2011
Messages : 18
Points : 3
Points : 3
Par défaut Désolé les petits français ... j'ai trouvé tout seul.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 
function getDefinedVars($varList, $excludeList)
  {
      $temp1 = array_values(array_diff(array_keys($varList), $excludeList));
      $temp2 = array();
      while (list($key, $value) = each($temp1)) {
          global $$value;
          $temp2[$value] = $$value;
      }
      return $temp2;
  }
 
function tryInclude($fileName,$allVariables=array()){
	extract($allVariables, EXTR_PREFIX_SAME, "wddx");
 
	if (file_exists($_SERVER['DOCUMENT_ROOT'].'/extension/'.$fileName)){
		include $_SERVER['DOCUMENT_ROOT'].'/extension/'.$fileName;
	}
	//elseif (file_exists($_SERVER['DOCUMENT_ROOT'].'/fonction/'.$fileName))
	else{
		include $_SERVER['DOCUMENT_ROOT'].'/fonction/'.$fileName;
	}
 
}
 
$excludeList = array('GLOBALS', '_FILES', '_COOKIE', '_POST', '_GET', 'excludeList', '_ENV','HTTP_ENV_VARS','HTTP_POST_VARS','HTTP_GET_VARS','HTTP_COOKIE_VARS','_SERVER','HTTP_SERVER_VARS','HTTP_POST_FILES','_REQUEST','HTTP_SESSION_VARS','_SESSION');//pour tryInclude
 
 
 
tryInclude('layout_menu-admin.php',getDefinedVars(get_defined_vars(), $excludeList));
shawidoom est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h20.


 
 
 
 
Partenaires

Hébergement Web