В разных частях программы нужно работать с разными БД.
Это просто - стандартное подключение к серверу и выбор базы. Далее смена базы ($mysqli...$mysqli->select_db).
Все хорошо, всё работает.
Но работать с БД нужно из обычного скрипта, "вложенного" (include), функций, пространства имен и т.д. Ситуаций масса.
Раньше делал по простому - всё "соединение" помещал в один файл. И подключал его везде, где есть работа с БД.
include_once (__DIR__.'/mysql_connect.php');
Но когда понадобилось работать с БД из функций, то $mysqli там не видно. Поэтому
global $mysqli;
Что не очень красиво.
Но ведь можно поместить код соединения БД в функцию, которая будет возвращать ссылку на соединение.
function connect_to_base()
{
$mysqli = new \mysqli($hostname, $username, $password, $main_settings['base']['base_1']);
return $mysqli;
}
И далее вызывать её где угодно, хоть в функции, без global.
$mysqli=connect_to_base(); $mysqli->//...........
Но, при "вложенных" (include) файлах, при таком подходе, количество соединений растет.
С global я всегда использую одно соединение, причем include_once гарантирует, что всегда одно.
А с function connect_to_base() я создаю соединения многократно. Но нет некрасивого global.
А может, есть ещё один вариант?
Как лучше организовать соединение с MySQL?