Я нигде не писал, что в $e->getMessage() содержится имя файла.
Отправка в телеграм - это тот же вывод.
И за него должен отвечать определенный блок программы.
В РНР можно определить обработчик исключений, и прописать там отправку куда угодно. В одном месте, а не распихивать эту отправку по всему коду.
Я писал выше, что объединять в одном классе и саму сущность (опрос) и CRUD для неё - это не очень хорошая практика. Но для простоты можно сделать в одном.
Что должен делать метод vote(), я не очень понимаю.
Но в целом да, у класса Опрос должен быть метод пройтиОпрос, который должен возвращать экземпляр еще одного класса, РезультатОпроса.
Всю эту художественную самодеятельность надо из поста убрать,а привести ровно две картинки:
1. Код создания таблицы с книгами
2. список настроек mysql. Искать часы надо не под фонарем, а там где потерял. Если тормозит БД, то привдить надо настройки базы данных, а не веб-сервера
Отправка в телеграм - это тот же вывод.
И за него должен отвечать определенный блок программы.
В РНР можно определить обработчик исключений, и прописать там отправку куда угодно. В одном месте, а не распихивать эту отправку по всему коду.