Сергей Протько: нет, использовать в проектах-за-деньги не буду. Просто хочу разобраться на каком этапе мои мысли пошли не в ту сторону. Вопрос, в таком случае, как грамотно реализовать взаимодействие с бд при ООП? Неужели это невозможно правильно сделать без orm и квери билдеров? Максимально близко к SQL? На каком уровне модели должны быть сформированы запросы?
Сейчас они у меня реализованы в классе работы с бд, но мне хотелось бы их разделить на те которые применяются часто и разовые. Пожалуйста, укажите где я не туда думаю?
Сергей Протько: Да, Сергей, всё верно. Речь идёт о доступе к базе. Спасибо за отсылку. Может быть тогда подскажете более верное решение для расширения (а не изменения) класса работы с БД?
Adamos: то, что маска запроса находится в классе работы с бд, в моём случае, это необходимость. Иначе пришлось бы использовать sprintf выше в модели каждый раз при обозначении маски запроса. Мне удобней контролировать правильную обработку переменных для запроса в одном классе, чем во всех сразу. Согласен, что с использованием плейсхолдеров эта проблема сходит на нет, так что буду изучать.
Adamos: про низкий уровень - возможно. Мне казалось чем ближе и изолированней будет класс с запросами к бд, тем легче контролировать его безопасность. По поводу "казалось" сразу оговорюсь: в документации строгой рекомендации по расположению не нашёл, а опыта пока ещё мало.
Adamos: Меня в своё время оттолкнула замарочка с AND и DESC (нужно создавать белые списки). Не стал разбираться, может и зря. Даже сейчас нет такой острой необходимости в автоматизации запросов, но спасибо за наводку, покопаюсь.
Тут же вопрос не в том, чтобы автоматизировать, а чтобы вывести часть больших, сложных, но редких запросов в отдельный класс. Насколько я понимаю, подключением библиотеки его решить не получится, или я не прав? К ней можно обратится с любого класса, или только унаследованного? Она сможет переварить запрос, который я указал в качестве примера в вопросе (с многосоставным AND)?
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.