2010-11-01 66 views
0

我有一個加載類或文件的函數。它的工作原理是這樣的。PHP - 延期加載程序?

function load ($type, $path, $file) { 
    ... 
    switch($type) { 
    case 'file': 
     .... 
     include $path . '/' . $file; 
    break; 
    } 
} 

它適用於類。它也適用於包含functions/html的文件。但是,如果我得到一個包含變量的文件,我會遇到範圍問題。有沒有一種簡單的方法將來自加載函數的變量傳遞給調用它的任何東西?

回答

1

是否有一種簡單的方法將負載函數中的變量傳遞到調用它的任何東西?

沒有。 load()有其自己的變量範圍,並且包含的​​文件繼承該範圍。

你將不得不對所有相關變量作爲參數傳遞給load()功能,或者,如果可能的話,請訪問使用變量$GLOBALS(呸!)

一種解決方法可以返回從load()文件路徑,而不是包括它:

return $path . '/' . $file; 

,並調用它像這樣:

$path = load("....."); 
if ($path) include $path; 

THI s會將文件包含在原始範圍內。

0

最簡單的方法來解決這個問題,以確保我的配置文件包含對象而不是變量。這消除了範圍問題,因爲變量可以靜態調用。

$user = database::user; 

該解決方案還使的它的應用程序運行時更容易動態地更改配置設置。