2011-06-21 15 views
1

我想從.php文件中獲取一些變量。我調用一個包含文件的函數,其中包含我想要的變量,但不會返回任何變量。在函數內,我可以查看變量值,但不在函數之外。如何從函數()中的include()中加載變量?

//MODULE INCLUDE 
function moduleInclude($mid) { 
$query = "SELECT file,type FROM sh_module WHERE mid = '{$mid}'"; 
$exe = mysql_query($query); 
$row = mysql_fetch_array($exe); 
$folder = moduleFolder($row['type']); 
$output = include("../includes/modules/".$folder."/".$row['file']); 

return $output; 
} 

//Load the vars 
moduleInclude($mod_ship); 
$ship_meth = $MODULE_title_client; 
//THE ^^^^ MODULE_title_client never returns anything :(
+0

什麼是包含'「../ includes/modules /".$文件夾。」/「。$ row ['file']'文件包含? – deceze

回答

2

包括不返回文件的內容包括只是將該文件的代碼放在文件所在的位置。

並且在include語句之後,文件中聲明的變量可用。但是當你試圖在函數外部訪問它們時,變量將不能被訪問,因爲它們現在是函數作用域。

您可以更新您的代碼以將該文件包含在該函數之外。

function moduleInclude($mid) { 
$query = "SELECT file,type FROM sh_module WHERE mid = '{$mid}'"; 
$exe = mysql_query($query); 
$row = mysql_fetch_array($exe); 
$folder = moduleFolder($row['type']); 
return "../includes/modules/".$folder."/".$row['file']; 
} 

//Load the vars 
$include_path=moduleInclude($mod_ship); 
include $include_path; 
$ship_meth = $MODULE_title_client; 
+0

是的,但這是否意味着我可以去調用一個變量?我不認爲它可以? –

+0

好主意,很有道理!然後我可以用URL字符串在本地調用它。 –

1

我認爲你可以使用這樣的事情:

//MODULE INCLUDE 
function moduleInclude($mid) { 
    $query = "SELECT file,type FROM sh_module WHERE mid = '{$mid}'"; 
    $exe = mysql_query($query); 
    $row = mysql_fetch_array($exe); 
    $folder = moduleFolder($row['type']); 
    include("../includes/modules/".$folder."/".$row['file']); 
    return get_defined_vars(); 
} 

//Load the vars from include file into array 
$module_vars=moduleInclude($mod_ship); 
//Use the desired variable 
$ship_meth = $module_vars['MODULE_title_client']; 

,如果我理解正確的你。這真的很難看,我建議你更多地瞭解variable scopes以使這段代碼更好,因爲在函數中包含幾乎總是錯誤的方法。我想我們需要知道你的包含文件「../includes/modules/".$folder."/".$row['file']裏有什麼要幫助你更好的。

+0

謝謝,好主意。我會照辦的。 –

0

在你結束就返回一個對象包括文件:

$foo = 1; 
$bar = 2; 
return array('foo' => $foo, 'bar' => $bar) 

然後,include將返回陣列模塊中返回。

相關問題