Хорошие вопросы, и у меня уже есть все ответы для вас (и даже ответы на вопросы, которые вы еще не задавали), просто следуйте моей статье Как подключиться к MySQL с помощью PDO .
Чтобы ответить на ваши вопросы более прямо:
- это хорошая альтернатива использованию метода die для устранения ошибок
В любом случае - нет.
Если честно, ваш нынешний подход не намного лучше старого. Код здесь негибкий, вы должны отредактировать его вручную, чтобы изменить поведение. Было бы намного лучше, если бы ваш код выдавал только ошибку, тогда как его обработка была бы определена в другом месте и легко настраивалась.
Не говоря уже о die()
. Поверьте мне, сайт, который говорит вам "Не удалось подключиться!"на белом экране выглядит ужасно непрофессионально. Вы никогда не должны использовать die таким образом.
@ mkasberg прав, как правило, вы не поймаете исключение, а дадите ему всплыть там, где это будет уместно. Однако PDO-соединение является особым случаем, так как трассировка стека в случае ошибки будет содержать учетные данные БД, которые вы, вероятно, никому не хотите показывать. Чтобы предотвратить это, я предлагаю выдать совершенно новое исключение, которое будет содержать ту же информацию об ошибке, но без трассировки стека.
это правильный способ подключения?
Кроме того, что было сказано выше, мы не можем сказать точно, не увидев DSN.
Есть ли преимущество подключения с использованием localhost по сравнению с IP-адресом сервера?
Как правило, имя хоста предпочтительнее, как и в любой другой службе. IP-адрес может измениться, но благодаря системе DNS доменное имя всегда будет указывать на правильный адрес. Однако localhost - это особый случай, и, судя по многим вопросам здесь о переполнении стека, я бы скорее рекомендовал использовать IP-адрес, поскольку он может сэкономить вам одну или две головные боли, например слишком большой тайм-аут при неправильной настройке DNS.