Каковы недостатки использования класса базы данных PHP в качестве одиночного? - PullRequest
12 голосов
/ 26 июня 2010

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

Ответы [ 4 ]

5 голосов
/ 26 июня 2010

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

1 голос
/ 26 июня 2010

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

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

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

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

1 голос
/ 26 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...