以前は、データベースに接続する必要があるすべてのクラスで Db 接続クラスを拡張していました。これが最も一般的な方法だと思います。ただし、この方法に従うと、db 接続クラスを拡張するすべてのクラス インスタンスで新しい接続を開いたり閉じたりします。最近、pdo オブジェクトを作成してクラスのコンストラクターに渡すことができると考えました。したがって、データベースへのアクセスが必要なすべてのクラス インスタンスは、同じ接続を使用します。それは機能しますが、これが効率的な方法であるかどうかはわかりません。また、スクリプトの最後で呼び出される closeCon という関数があり、null を介して接続を閉じて設定を解除します。それについてもご意見を伺いたいです。前もって感謝します : )
方法 1: 新しいクラスは dbConnection クラスを拡張します。
class Db {
public $pdo;
public function __construct($usr, $pwd, $db) {
$this->pdo = new PDO("mysql:host=localhost;dbname=".$db.";charset=utf8", $usr, $pwd);
}
}
class Users extends Db{
public function __construct(){
parent::__construct($usr, $pwd, $db);
}
}
方法 2: PDO dbConnection 変数を新しいクラスのコンストラクターに渡して、db に接続します。
class Db {
public $pdo;
public function __construct($usr, $pwd, $db) {
$this->pdo = new PDO("mysql:host=localhost;dbname=".$db.";charset=utf8", $usr, $pwd);
}
public function closeCon(){
$this->pdo = null;
unset($this->pdo);
}
}
class Users {
protected $pdo;
public function __construct($con){
$this->pdo = $con;
}
}
$db = new Db($usr, $pwd, $db);
$posts = new Users($db->pdo);
$db->closeCon();