Я создаю свой собственный Query Builder, используя php, который также может выполнять запросы и получать результаты из базы данных. Сначала у меня была эта функциональность в пределах одного класса, однако, подумав об этом, я полагаю, что QueryBuilder и DBProcessor должны быть двумя отдельными классами.Применение проблем с SRP. Как?
class QueryBuilder {
var $query;
...
function select()
function from()
function join()
function where()
...
}
class DbProcessor {
...
function execute()
function rowCount()
function startTransaction()
function lastInsertId()
...
}
Проблема, которую я имею использует thse вместе при попытке придерживаться других конвенций хорошо программирования. (Слабая связь)
Должен ли я создать конструкцию внутри QueryBuilder так, что экземпляр DbProcessor должен быть передан при создании? Однако эта идея, кажется, идет под гору, как я закончу дублирование имен методов в моем QueryBuilder только для вызова методов в DbProcessor вроде как следующий
class QueryBuilder {
var $DbProcessor;
function select()
...
function rowCount()
{
$this->DbProcessor->rowCount()
}
function startTransaction()
{
$this->DbProcessor->startTransaction()
}
}
Таким образом, только, кажется, добавить повторяющиеся имена методов и для того, чтобы было бы лучше просто поставить DbProcessor внутри QueryBuilder.
Как я могу достичь того, чего хочу здесь?