Каковы недостатки использования класса базы данных PHP как singleton?
Каковы недостатки использования класса базы данных PHP в качестве одноэлементного?
Ответ 1
Недостатки такие же, как для любого класса, который использует шаблон Singleton:
Ответ 2
Если ваш класс DB построен только для подключения к одной базе данных, у вас возникнут проблемы, если у вас есть script, которому необходимо подключиться к двум двум отдельным базам данных. Тем не менее, вы можете создать класс singleton для принятия нескольких конфигураций сервера, а затем управлять ими в пределах singleton.
В противном случае разработка класса базы данных в качестве синглета - это практика, которая имеет большой смысл, поскольку вы можете поддерживать жесткий контроль над тем, сколько соединений script делает в любой момент времени.
Ответ 3
Это затрудняет выполнение модульных тестов против него, а также делает невозможным несколько соединений с базой данных. Как мы все знаем, глобальные переменные имеют множество недостатков, и Singletons не являются исключением, только то, что они являются более "дружественной" глобальной переменной.
Я нашел довольно хороший статью об этом и старый вопрос SO также.
Ответ 4
Вы не можете использовать два подключения к базе данных. Вы хотели бы этого, потому что:
- У вас есть две базы данных.
- вы хотите что-то сделать в транзакции, когда другая транзакция уже запущена в текущем соединении с базой данных.
- вы хотите использовать несколько экземпляров базы данных в тестовых модулях