寫這個問題時,我已經解決了我的問題,但我仍然有其他問題。基本上我想我在這裏有變量的範圍理解問題,但目前我不明白爲什麼這不起作用。有人可以爲我指出嗎?PHP從一個類包含的文件訪問變量
我有這樣的index.php中:
spl_autoload_register(function($class) { include_once("./Class/{$class}.php")); });
Site::Page("page");
的Site.php包含一個類中,調用的方法主要包括另一個文件:
class Site {
public static function Page($name = null) {
if ($name) $inc = @include_once("./Page/{$name}.php");
}
public static function Dialog($name = null) {
if ($name) $inc = @include_once("./Page/Dialogs/{$name}.php");
}
}
page.php文件包含此:
$DB = DB::GetInstance();
Site::Dialog("dialog");
and dialog.php contains this:
$Stuff = $DB->Query("Some SQL query here");
if ($Stuff) {
// Processing result
}
我遇到的問題是PHP給了我有關$ DB的錯誤,因此它無法調用dialog.php中的Query方法。我預計它是全球可用的,因爲我只是包含另一個文件,但顯然情況並非如此。
DB類是一個管理數據庫連接的單例對象,我用dialog.php中的另一行解決了問題,我再次調用GetInstance()並將其分配給$ DB。
但是如果我想從index.php獲得另一個(而不是單例)類實例,例如?我怎樣才能訪問它,爲什麼這種方法不工作?
我想'Site :: Page(「page」);'調用'page.php'文件。替換'spl_autoload_register(function($ class){include_once(「./ Class/{$ class} .php」)); }); Site :: Page(「page」);'帶'Site :: Page(「page」); (函數($ class){include_once(「./ Class/{$ class} .php」)); });' –