2014-02-26 63 views
0

我有一個db連接函數和一個抽象數據庫類,因爲我構造它的方式。我必須繼續添加我的PDO連接代碼給構造函數。無法將變量從函數傳遞到類

我的config.php我在abstract.class.php有

function dbconnect() 
{ 
      $dbh; // database handler 
      $host = 'localhost'; 
      $user = 'root'; 
      $pass = ''; 
      $dbname = 'test101'; 
      $error; 
       // Set DSN 
       $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname; 
       // Set options 
       $options = array(
        PDO::ATTR_PERSISTENT => true, 
        PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION, 
        PDO::ATTR_EMULATE_PREPARES => false 

       ); 
       // Create a new PDO instanace 
       try{ 
        $this->dbh = new PDO($dsn, $this->user, $this->pass, $options); 
       } 
       // Catch any errors 
       catch(PDOException $e){ 
        $this->error = $e->getMessage(); 
       } 

      } 

include_once('config/config.php'); 

class Database { 


      public function __construct() { 
       dbconnect(); //connect to database 

      } 

      public function query($query) { 
       $this->stmt = $this->dbh->prepare($query); 
      } 

} 
$database = New Database(); 

沒有在config.php我有一個dtabase處理$dbh和abstract.class.php我我正在查詢函數中調用它。

我的問題

我得到一個錯誤Undefined property: Database::$dbh。我怎麼能從我的config.php傳遞給abstract.class.php?我想當你使用PHP包括這是複製和粘貼該文件中的任何文件,你想要使用它的相同。如何將$dbh從config.php傳遞到abstract.class.php,請隨時就任何可能發生的問題給我提供建議,或者任何與我的PDO連接有關的安全問題。

如果我複製並在構造函數中傳遞我的函數,並在構造函數外部將數據庫連接變量設置爲private $dbh;,但是這樣做的問題是當我不需要它時總是需要包含類。有時我可能只需要連接到數據庫還我想添加define salt到config.php文件

+0

您認爲'dbconnect'函數中定義的'__construct'函數可以做什麼? – zerkms

+0

@zerkms抱歉忘記編輯該部分時,我通過 – user3057514

+0

複製代碼問題仍未解決。它們只是2個嵌套函數。 – zerkms

回答

1

在你調用$這個 - 你的數據庫類>胸徑,所以在你的DBCONNECT功能, return $dbh,然後在數據庫類的構造函數:$this->dbh = dbconnect();