2011-07-03 47 views
-1

我有兩個類,數據庫和用戶。在數據庫類中,我有連接到數據庫的功能。我希望能夠連接到User類中的數據庫。這是我目前在做用戶類:在另一個類中自動加載數據庫類?

class User { 

    function __construct() 
    { 
     require_once 'database.class.php'; 
     $DBH = new Database(); 
     $DBH->connect(); 
    } 

    function register_user() 
    { 
     $DBH->prepare('INSERT INTO users VALUES (:username, :password, :forename, :surname)'); 
     $DBH->execute(array(':username' => 'administrator', ':password' => '5f4dcc3b5aa765d61d8327deb882cf99', ':forename' => 'Richie', ':surname' => 'Jenkins')); 
    } 
} 

我得到以下錯誤:

PHP Fatal error: Call to a member function prepare() on a non-object

回答

0

你應該閱讀有關「範圍之內。」 $DBH只在__construct()本地聲明。

整頓這很容易。只需添加

class User { 
    private $DBH; 

,並只要您有$DBH變化$this->DBH。可能有助於閱讀關於$this和成員變量。

+0

我收到此錯誤:PHP致命錯誤:調用未定義的方法Database :: prepare() – ritch

+0

這意味着'Database'類沒有一個名爲'prepare()'的方法。它的實現是什麼? –

+0

我有點困惑,爲什麼我不能使用PDO準備功能? – ritch

0

您需要將$DBH分配給類屬性以允許在其他類方法中進行訪問。眼下$DBH是本地的__construct(),不能外面的它

class User { 

    private $dbh; 

    public function __construct() { 
     ... // your code 
     $this->dbh = $DBH; 
    } 

} 

在其它類的方法,你會調用該對象與$this->dbh使用。

相關問題