我有幾個班,我目前正在建設一個應用程序,我想有一個訪問一些其他的成員函數,但我似乎無法做到這一點。PHP類範圍
第一類叫做MySQLdb的:
class MySQLDB{
public $connection;
function __construct(){
//connects to database
}
function login($username, $password){
//queries database...
}
}
然後我就稱爲會話類:
class Session{
//variables
//constructor
function processlogin($username, $password){
$database->login($username, $password);
}
在此之後然後我有兩個類聲明:
$database = new MySQLDB();
$session = new Session();
無在這裏,我把這些陳述關於類我仍然得到相同的錯誤:
PHP Notice: Undefined variable: database in C:\inetpub\wwwroot\cmu\include\session.php on line 52
PHP Fatal error: Call to a member function login() on a non-object in C:\inetpub\wwwroot\cmu\include\session.php on line 52
我已經看到了一些建議,建議把新的數據庫對象的會話類聲明中,但我想避免這樣做,因爲我使用的數據庫類代碼中與其它幾個地方,我不想打開到數據庫的多個連接。
謝謝我剛剛使用'全球$數據庫'語句,它現在工作得很好。我計劃在嘗試第二種方法時有機會,但我想與您覈對以確保它引用對象並且不會創建副本。 – 2011-05-30 19:32:35
我需要使用類似於我的最新項目,我意識到我正在運行大約10個數據庫實例。如果'MySQLDB'實例需要被其他類同時使用,可能會有問題,因爲'Session'實例中的'$ database'對象不會引用同一個實例。所以如果你從另一個地方改變這個對象,這個修改對你的班級將是不可見的。假設你想這樣做:'$ database-> setEncoding('utf-8');';那麼你將不得不爲你的會話數據庫做同樣的事情:'$ session-> database-> setEncoding('utf-8')' – 2011-05-30 19:38:09
這就是我所擔心的。 – 2011-05-30 19:58:58