Я бы порекомендовал не хранить данные для подключения к базе в константах. Я бы написал это так:
class Model
{
private static $db_creds = [
'user' => 'blog',
'host' => 'localhost',
'pass' => '12345',
'db' => 'blog'
];
static function db()
{
// закешируем соединение, зачем каждый вызов создавать новое?
static $db;
if (is_null($db)) {
$db = new mysqli(
self::$db_creds['host'],
self::$db_creds['user'],
self::$db_creds['pass'],
self::$db_creds['db']
);
if ($db->connect_errno) {
echo "Не удалось подключиться к MySQL: {$db->connect_error}";
// в следующий вызов попробуем еще раз
$db = null;
}
}
return $db;
}
public function get_data()
{}
}
И посоветовал бы использовать исключения для обработки ошибок. Их не нужно показывать пользователю, лучше их обработать, например, показать закешированную версию, перенаправить на другую страницу, показать красивое уведомление о 500 и т.д.