0

以下を達成するための最良の方法は何ですか:

class abc
{

 function xyz()
    {
      $PDO->Query(); //run any query
    }

}

すべての PDO クエリ/操作で接続を確立したくない。

パブリック関数、クラスなどを使用して、上記を達成するためにDB接続を行うにはどうすればよいですか。

ありがとう。

更新する必要があります。

同じクラスでつながりたくない。接続は他のクラス/関数からインポートする必要があります。このクラス abc は接続してはなりません。DB接続は、他のクラスやパブリック関数、またはその他の適切なアプローチからのものです。それはまさに私が探しているものです。

4

3 に答える 3

2
class abc
{
    private $PDO;

    function __construct($pdo)
    {
        $this->PDO = $pdo;
    }
    function xyz()
    {
        $this->PDO->Query(); //run any query
    }

}
$pdo = new PDO(...);
$foo = new abc($pdo);
于 2013-10-31T05:56:34.380 に答える
-2

シングルトン パターンを使用して接続を永続化できます...

class DB {
    private $_conn = null;

    // Make private to prevent direct object creation
    private function __construct($config) {
        $this->_conn = new PDO("mysql:host=".$config["host"].";port=".$config["port"].";dbname=".$config["dbname"], $config["user"], $config["password"]);
    }

    public static function connect($config) {
        static $_instance = null;
        if($_instance == null){
            $_instance = new DB($config);
        }
        return $_instance;
    }

    public function query ($res) {
        $query = $this->_conn->prepare($res);
        $query->execute();
        return $query;
    }
}

次のように使用して、PDO 接続を作成するか、既存の PDO 接続を取得できます。

$db = DB::connect($config);
$res = $db->query("SELECT * FROM table");
于 2013-10-31T06:00:41.243 に答える