Я использую mysqli для создания соединения с базой данных с использованием подхода ООП. Есть ли способ заставить его вести себя как mysql_connect, который получил $ new_link = false, заставляя его возвращать одно и то же соединение для всех в этом скрипте, даже если они создали новый экземпляр?
Это пример того, как я подключения:
class DB extends mysqli {
public function __construct() {
$server_params = $this->server_params;
if (!$server_params) {
throw Exception('No server params for server: '.$server);
}
@parent::__construct($server_params['host'], $server_params['user'], $server_params['pass'], $server_params['db'], $port, $socket);
if ($this->connect_errno != 0){
throw new Exception($this->connect_error, $this->connect_errno);
}
}
}
И делает два экземпляра просто звоню
$db = new DB;
дважды из разных пространств имен в том же сценарии.
Я знаю, что могу создать инъекцию singelton и/или использовать зависимостей, но задавался вопросом, можно ли это сделать непосредственно в запросе на соединение.
Да, это так. Почему бы вам не проверить его самостоятельно? –
Перефразированный вопрос, я на самом деле предположил, что это так, и задавался вопросом, есть ли способ «преодолеть» это. – Noam
+1 для правильного кода подключения. Откуда вы это узнали? Это редко можно увидеть в Stack Overflow. Единственное, что у вас есть, это дублированный вызов конструктора –