2013-05-21 71 views
0

我有一個包含這樣PHP的包括未命中變量

conf.php

$var1='some value'; 
$var2='some value'; 
$var3='some value'; 

我包括在另一文件中的函數內的本文件中像這樣

定義變量的文件conf.phpfuncs.php

function myFunction($value1 ,$value2){ 
include '../includes/conf.php'; 
echo $var1; //<= this give and empty string for all vars in conf.php 
} 

我似乎無法找出問題

+3

如果更換'和'require' include'會發生什麼? – andrewsi

+4

^並確保打開錯誤報告,最有可能'conf.php'不包括在內。 – doublesharp

+1

以這種方式使用包含是非常糟糕的做法。 – Spudley

回答

0

我使用$ GLOBALS變量解決了這個問題,所以在我的功能,我只需要做

function myFunction($value1 ,$value2){ 
echo $GLOBALS['value1']; //<= this works well 
} 
0

您沒有定義對根目錄的引用。 Add

__DIR__ 

它應該可以解決您的問題。

include __DIR__ . '/../includes/conf.php'; 

如果不工作: 我可能是錯誤的,但你可能必須聲明調用函數的範圍內,全局的變量(在這種情況下,「myFunction的」)來訪問它們。 否則我唯一的解釋是include路徑是不正確

function myfunction(value1, value2){ 
    include __DIR__ . '/../includes/conf.php'; 
    global $var1; 
    echo $var1; 
} 

希望它能幫助。

+0

我必須同意@dudewad,你的函數正在訪問一個局部範圍的變量,但在函數內聲明爲全局函數將訪問全局作用域變量 – BParker

0

是不是有理由讓這些變量定義爲常量?如果這些價值永遠不會改變,並且你不希望他們永遠不會改變,我會強烈推薦它。 (看到,因爲這是一個配置文件。) http://php.net/manual/en/language.constants.php

否則我會看看是否被包括在該文件實際上是加載並查看是否變量被本地引用,您可能需要變量範圍更改爲全局的變量作用域可能只是針對那個函數。 http://php.net/manual/en/language.variables.scope.php