Прошло много времени с тех пор, как я разместил здесь вопрос, но мне нужна помощь, пытаясь понять это поведение.
У меня есть простой скрипт для отладки, если мое соединение было установлено, с использованием mysqli.
$mysqli = new mysqli(HOST, USER, PASSWORD, DB);
if ($mysqli->connect_error){
die('Connection error: (' . $mysqli->connect_errno . ') '.$mysqli->connect_error);
}else{
die(var_dump($mysqli));
}
Это работает просто отлично, если соединение не было установлено, по какой-либо причине, в connect_error произошла моя ошибка, и скрипт умирает, и я знаю, почему он умер, он говорит мне. Иначе, он умирает и выдает мне значения свойств объекта соединения, все хорошо.
НО, если я добавлю новый экземпляр между объявлением и отладкой, есть 2 возможности:
Случай 1
$mysqli_invalid = new mysqli(HOST, USER, PASSWORD, DB);
$mysqli_valid = new mysqli(HOST_valid, USER_valid, PASSWORD_valid, DB_valid);
if ($mysqli_invalid->connect_error){ <--NOT SET, it comes NULL
die('Connection error: (' . $mysqli_invalid->connect_errno . ') '.$mysqli_invalid->connect_error);
}else{
die(var_dump($mysqli_invalid)); <--ALL CLASS PROPERTIES ARE NULL
}
В этом случае он переходит к другому, и объект mysqli выбрасывается со всеми его свойствами NULL.
Случай 2
$mysqli_invalid1 = new mysqli(HOST, USER, PASSWORD, DB);
$mysqli_invalid2 = new mysqli(HOST_invalid2, USER_invalid2, PASSWORD_invalid2, DB_invalid2);
if ($mysqli_invalid1->connect_error){ <--SET WITH $mysqli_invalid2 values.
die('Connection error: (' . $mysqli_invalid1->connect_errno . ') '.$mysqli_invalid1->connect_error);
}else{
die(var_dump($mysqli_invalid1));
}
В этом случае он умирает, но мой $ mysqli_invalid1 имеет значения $ mysqli_invalid2.
В моем проекте у меня 5 подключений, поэтому мне нужно проверить, каждое соединение было сделано сразу после того, как я пытаюсь установить соединение. Если я попытаюсь установить все соединения, а затем проверить, было ли установлено каждое из них, оно не работает так, как я ожидал бы, что оно будет работать.
Если PHP подготовлен для объектно-ориентированного программирования, почему это имеет такой вид? поведения?