2013-10-14 22 views
2

我剛開始使用PDO,想知道如何最好地聲明數據庫連接?PDO:在哪裏聲明數據庫連接?

難道最佳實踐創建一個腳本如下,例如所謂的config.php

的config.php

<?php 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true 
)); 
?> 

然後有example.class.php

<?php 
include config.php; 
class Example { 
    public function fetch() { 
      $data = $dbh->query('SELECT * FROM myTable WHERE name = ' . $conn->quote($name)); 
      // do stuff 
    } 

} 
?> 

併爲我的所有課程做到這一點?或者這會使多個連接?我想盡可能少的連接。

回答

2

您近了,但您的fetch功能將不起作用,因爲$dbh超出了範圍。

你可以全球化,但更好的方法是在實例

class Example { 
    /** @var \PDO */ 
    protected $pdo; 

    public function __construct(\PDO $pdo) { 
     $this->pdo = $pdo; 
    } 
} 
$class = new Example($dbh); 

這是一個最好的做法,以處理程序傳遞給你的類。這樣設置和命名數據庫指針的後勤是無關緊要的。你的類定義了它將如何接收它,並使用你傳遞的指針的實例。

2

你的例子看起來不錯,它只會創建一個持久連接。

然而,你應該在$dbh傳遞到的Example__construct,並做$this->dbh後來不是依靠$dbh是一個全球性的。

爲了避免在所有需要訪問的類中都需要這樣做,您可以實現一個類來處理數據庫和其他classes inherit或實現Trait

0

爲了保持整潔有序的代碼,您可以創建一個「DbManager」類並實例化PDO,創建查詢和其他方法等等。 您可以使用config.php來存儲您的應用程序配置。