4

これは PDO 接続を行う正しい方法ですか。

私はさまざまなクラスを持っています (各クラスには独自のファイルがあります)、PDO オブジェクトとすべてのクラス オブジェクトを含む構成ファイルがあります。私はそれを正しく行っているか、より良い方法があります。

classA.php

class classA {

    private $PDO;

    function __construct($PDO) { 
        $this->PDO = $PDO;
    }
    //other functions
}

classB.php

class classB {

    private $PDO;

    function __construct($PDO) { 
        $this->PDO = $PDO;
    }
    //other functions
}

classC.php

class classC {

    private $PDO;

    function __construct($PDO) { 
        $this->PDO = $PDO;
    }
    //other functions
}

そしてconfig.phpページで:

include_once("db.php"); //contains db variables values
try
{
    $PDO = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
    die("Failed to connect database: " . $ex->getMessage());
}

require 'classA.php';
require 'classB.php';
require 'classC.php';

$objA = new classA($PDO);
$objB = new classB($PDO);
$objC = new classC($PDO);

ほぼすべてのページに config.php を含めます。

4

2 に答える 2

2

短い: はい、正しいですが、完全ではありません。

あなたはそれを正しくやっていると思います。これは依存性注入と呼ばれます。

しかし、あなたのコードには重複があります( DRY! )。継承を使用して回避できます。

また。「死にたい」場合は、例外をまったくキャッチしないでください。

ほぼすべてのページに config.php を含めます。

エントリーポイントを中心にやればいいのに。フロントコントローラーパターン

于 2013-11-01T12:57:18.343 に答える
0

あなたの状況によると、あなたのアプローチは問題ありません。(フロントコントローラーパターンではありません)

Dependency Injection はクリーンで保守しやすいため、シングルトンは避けてください。

Singleton パターンの発明者の 1 人である Erich Gamma でさえ、最近ではこのパターンを疑っています。

「私は Singleton を削除することに賛成です。その使用は、ほとんどの場合、デザインの臭いです」

于 2013-11-01T14:09:15.447 に答える