2011-01-02 7 views
0

Je voulais savoir comment les fichiers sont inclus dans PHP. Ce que je veux dire par là, c'est comment les variables des fichiers inclus sont importées et comment le fichier inclus est capable d'utiliser les variables du fichier principal. J'étais en train de créer un système de templates et le problème était que j'avais un fichier d'index qui comprenait les autres fichiers comme config.php etc. Mais selon la page demandée, index.php contenait aussi les fichiers template. Mais pour une certaine raison, je n'étais pas en mesure d'utiliser les variables à partir du fichier de configuration à partir du fichier template.phpPhp y compris les fichiers

+1

son problème de portée variable, ne pas inclure. n'incluez pas l'intérieur de la fonction si vous voulez accéder aux variables globales –

+0

Une bonne idée est d'imaginer le script inclus en remplaçant l'instruction 'include()' en place. Ensuite, il devient évident comment la portée variable vous a échoué. – mario

+0

Je crois que c'est aussi une question de timing. Si vous essayez d'utiliser une variable avant l'inclusion du fichier, vous recevrez une erreur. – Anthony

Répondre

1

ci-dessous est vars.php

<?php 

$color = 'green'; 
$fruit = 'apple'; 

?> 

ci-dessous est test.php

<?php 

echo "A $color $fruit"; // A 

include 'vars.php'; 

echo "A $color $fruit"; // A green apple 

?> 

simple de http://php.net/manual/en/function.include.php

déclarant global variables

<?php 
$a = 1; 
$b = 2; 

function Sum() 
{ 
    global $a, $b; 

    $b = $a + $b; 
} 

Sum(); 
echo $b; 
?> 

un coup d'oeil à ce http://php.net/manual/en/language.variables.scope.php

+0

Merci .............. –

1

portée variable est héritée.

Vous pouvez même renvoyer une valeur depuis un fichier include d! Sinon, vous pouvez considérer la fonction comme une insertion simple, basée sur du texte (lexical).

Voir http://php.net/manual/en/function.include.php pour plus d'informations.

+0

La documentation dit, explicitement: "Quand un fichier est inclus, le code qu'il contient hérite de la portée variable de la ligne sur laquelle se trouve l'inclusion.Toutes les variables disponibles sur cette ligne dans le fichier appelant seront alors disponibles dans le fichier appelé, mais toutes les fonctions et classes définies dans le fichier inclus a la portée globale. " –