0

私のクラスの多くは、作業を行うためにデータベースへのアクセスを必要とします。しばらくの間、私は次のようなことをしてきました:

// Create a (one) database object
$mysqli = new mysqli("host", "username", "password", "db");

// Pass database object into each new object that requires database interaction as follows
$car = new Car($data, $mysqli);
$plane = new Plane($data, $mysqli);
// etc

次に、各クラスにはプライベート$ mysqliメンバーがあり、渡されたmysqliオブジェクトが次のように構成で割り当てられます。

class Car {

    private $mysqli;

    public function __construct($data, $mysqli) {

        $this->mysqli = $mysqli;

    }

}

次に、クラスメソッドは次のようにmysqliオブジェクトを簡単に使用できます。

public function fuelLevel() {

    $this->mysqli->query("SELECT fuel_level FROM fuel_tank");

}

私の質問は、これらのオブジェクトを数千個作成した場合、パフォーマンスの問題が発生するかどうかです。そうすることで、アプリケーション全体で技術的にデータベース接続が1つだけであると考えるのは正しいですか?または、恐れられているパフォーマンスのオーバーヘッドを回避するために、以下のような参照(ポインター?)を使用する必要がありますか?

$car = new Car($data, &$mysqli);
$plane = new Plane($data, &$mysqli);
4

1 に答える 1

0

いいえ、これによってパフォーマンスに測定可能な影響が生じる可能性はありません。正解です。参照によって渡す単一の接続オブジェクトがあります。このレベルの最適化は、PHPで開発する際に気にする必要のあるものではありません。

new Car($data, &$mysqli)PHP5.3で非推奨となったcall-timepass-by-reference()は絶対に使用しないでください。

于 2012-06-29T14:16:24.733 に答える