2013-02-02 94 views
0

由於今天我將非靜態數據庫的變量傳遞給我的php項目的函數,因此需要數據庫訪問。 我讀了所有關於多個數據庫連接,所以我改變了我的數據庫連接到一個靜態函數,所以我有我的所有函數訪問我的數據庫連接,而不會將其作爲函數的參數傳遞。因此,通過使用例如myDatabaseConnection :: myFirstdatabase-> prepare等來訪問我的數據庫連接(甚至不同的數據庫)是可能的......靜態數據庫連接作爲函數的參數

問題是:什麼是最佳實踐?這樣做很好嗎?我的一些函數(例如從數據庫中讀取一些數據)取決於數據庫連接,但是如果我從函數的參數中刪除數據庫連接變量,則似乎缺少某種(某種依賴性) 。

那麼最佳做法是什麼?你是否將數據庫連接作爲變量傳遞給需要數據庫訪問的函數?

非常感謝。

我理解與連接的事情。 但是我的項目中的其他功能呢?像例如從數據庫中讀取所有成員名稱的函數? 您是否將數據庫連接變量傳遞給該函數,或者是否使用我的「全局」靜態數據庫連接訪問該函數內部的數據庫連接?我知道,它不是全球性的,但我的靜態數據庫連接可以從任何地方訪問...

回答

0
<?php 
require_once('CLASSdatabase.php'); 

class AUTHENTICATE{ 
    private $user_database_object; 
    private $current; 
    private $email_id; 
    private $password; 
    private $error; 

    function __construct($email_id,$password){ 
     $this->user_database_object=new MYSQL_DATABASE("user"); 
     $this->email_id=$email_id; 
     $this->password=$password; 
    } 

    private function verify_password(){ 
     $sql="select password from `users` where email_id='"; 
     $sql.=$this->email_id."';"; 
     $this->user_database_object->open_connection(); 
     $row=$this->user_database_object->fetch_array($this->user_database_object->query($sql)); 
     // code ... 
     $this->user_database_object->close_connection(); 
    } 
} 
// code .. 
?> 

CLASSdatabase.php

<?php 
require_once("config.php"); 

    class MYSQL_DATABASE{ 
     private $dbname; 
     private $connection; 
     public $last_query; 

     function __construct($dbname){ 
     $this->dbname=$dbname; 
     } 

     public function open_connection(){ 
     } 
     public function close_connection(){ 
     } 
     public function query($sql){ 
     } 
     public function fetch_array($result_set){ 
     } 
     // code ... 
    } 
?> 
0

你的數據庫連接對象應該有實例化時注入的依賴項。那麼你的課程是可重用的。恕我直言

+0

能否請您提供一個例子。 – ade