Каковы недостатки использования класса базы данных PHP в качестве одноэлементного?

Каковы недостатки использования класса базы данных PHP как singleton?

Ответ 2

Если ваш класс DB построен только для подключения к одной базе данных, у вас возникнут проблемы, если у вас есть script, которому необходимо подключиться к двум двум отдельным базам данных. Тем не менее, вы можете создать класс singleton для принятия нескольких конфигураций сервера, а затем управлять ими в пределах singleton.

В противном случае разработка класса базы данных в качестве синглета - это практика, которая имеет большой смысл, поскольку вы можете поддерживать жесткий контроль над тем, сколько соединений script делает в любой момент времени.

Ответ 3

Это затрудняет выполнение модульных тестов против него, а также делает невозможным несколько соединений с базой данных. Как мы все знаем, глобальные переменные имеют множество недостатков, и Singletons не являются исключением, только то, что они являются более "дружественной" глобальной переменной.

Я нашел довольно хороший статью об этом и старый вопрос SO также.

Ответ 4

Вы не можете использовать два подключения к базе данных. Вы хотели бы этого, потому что:

  • У вас есть две базы данных.
  • вы хотите что-то сделать в транзакции, когда другая транзакция уже запущена в текущем соединении с базой данных.
  • вы хотите использовать несколько экземпляров базы данных в тестовых модулях