ですから、これは私が何年にもわたって理解することを意味してきたことです。いくつかの小さな(単一ファイル)アプリケーションをPDOに変換します。PDOを使用し、データベースに接続してクエリを実行できますが、すべて機能しています。
しかし、新しいPDOを初期化するたびに、実行する
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
必要もあります。たった1行ですが、いつかそこにさらに何かを追加する必要があるかもしれません。私には、その行を含めることができる方法でPDOクラスを拡張して、DB接続を1行で開始できるようにする方がよいように思われます。自分のクラスを作成すると、この段階で1行のコードを追加するだけでも、将来何かを追加することにした場合でも、将来にわたって利用できるようになります。
私はこのようなものを見つけました...
class myPDO extends PDO {
public function __construct($dsn, $user=null, $pass=null, $options=null) {
parent::__construct($dsn, $user, $pass, $options);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
// THEN A SIMPLE 1 LINER TO CONNECT - USING TRY/CATCH AS WELL OF COURSE
$pdo_conn = new myPDO($cfg['pdo_dsn'], $cfg['pdo_user'], $cfg['pdo_pass'], $cfg['pdo_options']);
クラスを拡張するとき、コンストラクターを実際に再作成する必要はないと思います。コンストラクター関数を再作成せずにクラスに
統合する方法はありますか?$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
私はPHPのクラス構文を使い始めたばかりなので、これは誰かにとって本当に基本的な質問になりますが、同時に他のいくつかの質問にも答えます。