Что недостатки использования являются классом базы данных PHP как одиночным элементом?
Это затрудняет запуск модульных тестов, а также делает невозможным наличие нескольких соединений с базой данных. Как мы все знаем, глобальные переменные имеют множество недостатков, и синглтоны не исключение, только то, что они являются более «дружественной» глобальной переменной.
Я нашел довольно хорошую статью об этом, а также старый вопрос SO .
Если ваш класс БД построен для подключения только к одной базе данных, у вас будут проблемы, если у вас есть сценарий, которому необходимо подключиться к 2 двум отдельным базам данных. Однако вы можете создать одноэлементный класс для приема нескольких конфигураций сервера, а затем управлять ими в одноэлементном классе.
В противном случае проектирование класса базы данных как синглтона - это практика, которая имеет большой смысл, поскольку вы можете строго контролировать, сколько соединений скрипт устанавливает в любой момент времени.
Недостатки такие же, как и у любого класса, использующего шаблон синглтона:
Вы не можете использовать два подключения к базе данных. Вы хотите этого, потому что: