我打破了我的頭爲什麼最簡單的東西不工作。PHP全球變數
我只想要訪問在包含文件中聲明的變量。
我有一個名爲connection.php的文件,其中有一個名爲MySqlDatabase的類。在文件的底部,我創建的類的實例,並將其assiged變量名爲$數據庫
// filename database.php begin
class MySqlDatabase(){
// code goes here
}
$database = new MySqlDatabase();
// filename database.php end
現在我包括database.php中在something.php和試圖訪問$數據庫變量這樣
//something.php
require_once 'database.php';
function foo(){
global $database;
$sql = "some sql statement";
mysql_query($sql,$database->connection);
//and remainig code goes here...
}
當我運行something.php時,預計全局變量$ database應該在函數foo()中可用,但它看起來像變量爲null,我用is_object()函數測試以檢查對象可用但它返回false。
爲了調試目的,我在database.php文件中添加了is_object()檢查,它返回true。
我也試圖訪問使用其他選項全局變量像
$database =& $GLOBALS['database'];
但我仍然沒有運氣。然後我使用print_r()函數打印完整的$ GLOBALS數組,但它沒有$數據庫變量,我也使用get_defined_vars()進行檢查,但它也沒有變量。但我能夠看到他們在包含文件本身
我打破了我的頭,因爲兩天來使這個簡單的事情工作,但我妥協和複製粘貼數據庫連接代碼的所有文件。
$ database並不是一個全局變量,因此您實際上只是在使用'foo()'函數時使變量$ database可用。我們可以看到完整的'MySqlDatabase()'類,那麼該類的實現將變得更加清晰。 – Luke