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

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

Недостатки такие же, как для любого класса, который использует шаблон Singleton:

  • Трудно проверить код, который использует синглтоны.

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

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

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

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

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

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