失礼いたします。
PHPで開発をしており、今まで以下のようにPDOを使用しておりました。
php
1class db { 2 public static function dbc { 3 $pdo = new PDO(....); 4 return $pdo; 5 } 6}
例えば、viewに関することで、DBに接続する際には上のクラスを呼び出している形をそのたびクラス内でとっていました。
例えば(セキュリティチェック等無視します)、
php
1class view { 2 public function row { 3 $db = db::dbc(); 4 $db->prepare('何らかのSQL'); 5 $db->bindValue(...); 6 $db->execute(); 7 } 8}
という感じです。
が、最近になって、例えばview以外のクラスまたはメソッドで、他にPDOを連続して使用する場合、何度も新規に接続するのは負荷が増えるのでは、と思うようになりました。
そこでPDOの再利用について調べると、stackoverflowに
・global, または$GLOBALSを使う(あくまで非推奨)
・__constructでクラスの呼び出し時に設定する
が見つかりました。
グローバルは極力使わない方が良いと思いますので、呼び出し時に設定する方が良いのかなとは思うのですが、これも本当に望んでいる形ではないのかなと思いました。
php
1class view { 2 private $db; 3 public function __construct($pdo){ 4 $this->db = $pdo; 5 } 6 public function row{ 7 $db = $this->db; 8 ....後は上記のコードと同じ 9 } 10}
ということになるのですが、本当はグローバルのような形が最も望ましいです。
引数に継ぐ形ではなく、class内、メソッド内で終わらせることができたらと思います。
__constructを他の機能に使っている場合、引数が$pdoのぶん2つになってしまいますので。
方法がない場合は、大人しく__constructを使おうと思っております。
皆さまが他に使用なさっている記述がございましたら、ご教授いただけませんでしょうか。
何卒、よろしくお願いいたします。
PHPの使用歴は1年程度です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/15 08:29
退会済みユーザー
2018/07/15 10:02
2018/07/31 20:57