IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

interprétation de variable dans heredoc en cascade


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2003
    Messages : 69
    Par défaut interprétation de variable dans heredoc en cascade
    Bonjour,
    j'ai un souci de conception que je n'arrive pas à résoudre.


    J'ai dans un fichier php y :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    define('THEME', 'boy');
    $css = css(THEME);
    $header = inc_file('header.php');
    $nav_bar = inc_file('nav_bar.php');
    $side = inc_file('side.php');
    $footer = inc_file('footer.php');
     
    require(VIEW.'accueil_nli.php');
    ici, le contenu des fichiers est stoqué dans des variables grace à une fonction inc_file() décrite plus bas.
    Ces fichiers on la même forme que celui inclus par le require() (qui est le principale), le voici (appelons-le x):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    <?php
     
    $page = <<<HTML
    {$header}
    
    <body>
        
    	{$nav_bar}
    
        <div id="global">
            {$side}
    
            <div id="page" class="arrondi1">
                <h1>
                    <a href="{$configROOT}">
                    <img src="img/tua.png" />
                    </a>
                </h1>
                <div id="contenu" class="arrondi2">
                    <h2>Bienvenue</h2>
                    <p>blahblahblah
                    </p>
    
                    <h2>But</h2>
                    <p>
                    blahblahblah
                    </p>
                </div>
            </div>
        </div>
    {$footer}
    HTML;
     
    echo $page;
    ?>
    fonction inc_file() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function inc_file($file, $mode="include") {
        $file = VIEW.$file;
        ob_start();
        if($mode == "include") {
            include($file);
        }
        elseif ($mode == "require") {
            require($file);
        }
        else {
            ob_end_clean();
            return false;
        }
        $buffer = ob_get_contents();
        ob_end_clean();
     
        return $buffer;
    }
    Lorsque que j'utilise ma fonction inc_file() sur un fichier et qu'une variable doit etre interprété par php dans ce fichier. La variable n'est pas interpréter.
    Sachant que les fichiers stocké dans des variables avec cette fonctions sont sont affiché grace a un appel a leur variable correspondante dans le fichier avec le heredoc principal, le fichier x.
    C'est un problème d'interpretation de variable de heredoc en cascade.

    Exemple:
    Dans x, j'inclus le contenu de header.php dans la variable $header (variable déclarer dans y). Le contenu de $header est bien affiché.
    Mais dans header.php qui utilise aussi les heredoc, je veux inclure le contenu de $css (déclaré dans y) mais cela ne marche pas.
    Cela ne marche que si $css est déclaré avant le heredoc du fichier header.php, mais je ne veux pas faire ça.

    header.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     
    $page = <<<HTML
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
        <style type="text/css">
        <!--
            {$css}
        -->
        </style>
    </head>
     
    <body>
    HTML;
     
    echo $page;
     
    ?>
    j'ai comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: css in I:\easyphp\www\tua\pages\header.php on line 23
    et aucun thème d'afficher forcément...


    Je ne saisie pas le problème car le fichier est interpréter au moment ou j'utilise inc_file(), les variables sont donc supposé être déjà interprété au moment du stockage dans la variable. Hors ce n'est pas le cas :s

    Auriez vous une solution ? J'èspére avoir été clair dans mes explications

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par dkmatt Voir le message
    Je ne saisie pas le problème car le fichier est interpréter au moment ou j'utilise inc_file(), les variables sont donc supposé être déjà interprété au moment du stockage dans la variable. Hors ce n'est pas le cas :s
    si c'est le cas mais ensuite la variable $css n'est plus accessible dans la fonction "inc_file"
    c'est expliqué dans la manuel officiel là :
    http://php.net/language.variables.scope

Discussions similaires

  1. interpréter une variable dans une chaine
    Par lequebecois79 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/06/2010, 10h39
  2. Interprétation variable dans requête particulière
    Par Chris_fr7 dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2009, 22h19
  3. interprétation des variables dans une chaîne
    Par marts dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2009, 20h01
  4. Interpréter une variable contenue dans un fichier texte
    Par frederic_s dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/10/2007, 14h06
  5. Réponses: 5
    Dernier message: 19/07/2007, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo