Même si Paul décrit ce qui se passe, je vais essayer d'expliquer à nouveau.
Lorsque vous créez une variable, elle appartient à une étendue particulière. Une portée est une zone dans laquelle une variable peut être utilisée.
Par exemple, si je devais faire
$some_var = 1;
function some_fun()
{
echo $some_var;
}
la variable n'est pas autorisée dans la fonction, car il n'a pas été créé dans la fonction. Pour que cela fonctionne dans une fonction, vous devez utiliser le mot-clé global donc l'exemple ci-dessous travaillerait
$some_var = 1;
function some_fun()
{
global $some_var; //Call the variable into the function scope!
echo $some_var;
}
C'est vice-versa de sorte que vous ne pouvez pas effectuer les opérations suivantes
function init()
{
$some_var = true;
}
init();
if($some_var) // this is not defined.
{
}
Il y a quelques façons Autour de cela, mais le plus simple de tous utilise $GLOBALS
tableau qui est autorisé n'importe où dans le script car ce sont des variables spéciales.
Alors
$GLOBALS['config'] = array(
'Some Car' => 22
);
function do_something()
{
echo $GLOBALS['config']['some Car']; //works
}
Assurez-vous également que votre serveur a register globals est désactivé dans votre INI pour la sécurité. http://www.php.net/manual/en/security.globals.php
super.Cela a résolu le problème: D – ganjan
Alternativement vous pourriez 'require()' le fichier depuis l'intérieur de la fonction elle-même. Cela aurait également mis dans la bonne portée. Je ne peux pas dire que je recommanderais de le faire, mais le fait est que lorsque vous incluez un fichier, il est exécuté dans la portée de l'instruction include. –