我的许多类都需要访问数据库才能完成工作。一段时间以来,我一直在做类似的事情:
// 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");
}
我的问题是,如果要创建几千个这样的对象,我会遇到任何性能问题吗?我是否正确认为这样做在我的整个应用程序中只有一个数据库连接?或者我应该使用如下所示的引用(指针?)来避免担心的性能开销?
$car = new Car($data, &$mysqli);
$plane = new Plane($data, &$mysqli);
不,这不可能造成任何可衡量的性能影响。你是对的,有一个连接对象是通过引用传递的。在 PHP 中开发时,这种级别的优化不是您应该关注的事情。
你绝对不应该使用调用时传递引用(new Car($data, &$mysqli)
),它在 PHP 5.3 中被弃用。