youtube_com_chevichelov
@youtube_com_chevichelov

Как запретить подключение к бд более 1 раза?

class DB {
	public static $mysqli;
	private $connect = true;

	function __construct() {
		if ($this->connect) {
			$mysqli = new mysqli($this->host, $this->user, $this->password, $this->db);
			$mysqli->set_charset("utf8");
			$this->mysqli = $mysqli;
			$this->connect = false;
		}
    }

При каждом вызове наследников класса DB происходит новое подключение к бд, как это предотвратить?

[Решение]
Мой косяк, по невнимательности вызывал класс несколько раз, из-за чего и возникла данная ошибка.
  • Вопрос задан
  • 226 просмотров
Пригласить эксперта
Ответы на вопрос 3
@feldwebel
Сделай класс DB синглтоном. И не наследуй его, а инъектируй.
Ответ написан
Комментировать
@SergeyZelensky-Rostov
<?php
class DB {
	
	public static $mysqli;
	
	private $connect = true;
	
	private $_instance = null;
	
	
	private function __construct() {
		
		if ($this->connect) {
			
			$mysqli = new mysqli($this->host, $this->user, $this->password, $this->db);
			
			$mysqli->set_charset("utf8");
			
			$this->mysqli = $mysqli;
			
			$this->connect = false;
			
		}
		
	}
    private function __clone(){}
	
	public static function init(){
		
		if($_instance === null){
			
			self::$_instance = new self();
			
		}
		
		return self::$instance;
		
	}
	
}

называется такая штука singletone
Ответ написан
Комментировать
@jaxel
2016 год на дворе. Не надо использовать mysqli. Используйте какую-нить ORM или хотя-бы PDO.

Синглтон - скорее антипаттерн, и для БД точно не лучшее решение. Что вы будете делать, если надо будет подключаться к двум базам?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы