Статичный класс для соединения с базой данных
Вот простой класс, который должен подключаться к базе данных и посылать запросы. Мне нужно, чтобы класс был статическим, то есть чтобы можно выполнять запросы так:
$result = SQL::Query($string);
Но при этом я хочу, чтобы при загрузке страницы устанавливалась одна связь с БД (приватная переменная в классе SQL), и все запросы, осуществляющиеся на этой странице, шли через неё. Чтобы не устанавливать каждый раз при посылке запроса подключение к БД. Это вообще возможно?
Я думал решить это так:
private static $connection;
private static $defaultArgs;
...
public static function Connect(array $args) {
self::$connection = @new mysqli($args[0], $args[1], $args[2], $args[3]);
// проверки на ошибки подключения и загрузку набора символов utf-8
}
public static function Query($string) {
if(!self::$connection || is_null(self::$connection)) {
self::$connection = self::Connect($defaultArgs);
}
return self::$connection->query($string);
}
Но переменная $connection
всегда остается равной NULL
, она даже не инициализируется. Я понимаю, что напутал со статичностью; как сделать так, чтобы подключаться приходилось лишь единожды, но экземпляр класса не создавать, чтобы иметь возможность пользоваться статичными методами без создания переменных вне класса?