Не знаю как правильно описать проблему, из кода думаю будет все понятно.
Есть метод:
public function DBConnect() {
$this->db = new mysqli(self::DBHOST, self::DBUSER, self::DBPASS, self::DBNAME);
if ($this->db->connect_errno) {
die($this->db->connect_error);
} else {
$this->db->query("SET NAMES utf8");
}
}
В результате подключения в свойстве $this->db оказывается пустой mysqli объект. Соответственно, свойство connect_errno в нем пустое и код продолжает работать так, как будто соединение работает.
class mysqli#3 (19) {
public $affected_rows =>
NULL
public $client_info =>
NULL
public $client_version =>
int(50011)
public $connect_errno =>
int(0)
public $connect_error =>
NULL
public $errno =>
NULL
public $error =>
NULL
public $error_list =>
NULL
public $field_count =>
NULL
public $host_info =>
NULL
public $info =>
NULL
public $insert_id =>
NULL
public $server_info =>
NULL
public $server_version =>
NULL
public $stat =>
NULL
public $sqlstate =>
NULL
public $protocol_version =>
NULL
public $thread_id =>
NULL
public $warning_count =>
NULL
}
В результате чего выводятся ошибки типа:
Couldn't fetch mysqli
Если же создавать объект в статичном свойстве, то все нормально:
public function DBConnect() {
self::$db = new mysqli(self::DBHOST, self::DBUSER, self::DBPASS, self::DBNAME);
if (self::$db->connect_errno) {
die(self::$db->connect_error);
} else {
self::$db->query("SET NAMES utf8");
}
}
Я что-то не понимаю и так должно быть? Или ...?
P.S. PHP 5.5.7