![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Какие требования у вас к интерфейсу класса, работающего с базой данных? На сколько для вас удобно широкое абстрагирование от запросов? Интересно узнать, что вас более всего привлекает в работе с базой данных через класс-оболочку?
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Что имеется в виду под "абстрагированием от запросов"? ORM?
|
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Я видел, как некоторые пишут класс с малым количеством методов, довольствуются методом query, в который передают строку запроса и парой методов получения данных, вернутых сервером. Если посмотреть иходники joomla, то видно что они на много шире абстрагируются от запросов к базе данных, например отдельно ставят limit и offset и так далее...
надеюсь, доступно)) |
|||
|
||||
| ruX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 8.9.2006 Где: г.Гатчина Репутация: 1 Всего: 3 |
Нравиться CodeIgniter'овский activeRecord, простые запросы можно написать в очень наглядном виде, и быть уверенным в том что точно всё заэкранированно.
Как только запрос становиться более громадный, приходиться руками писать. Опять же используя placeholder'ы. Это хорошее правило которое гарантирует что не допустишь иньекции. Хотя сейчас понимаю что от activeRecord стоило вообще отказаться - лучше использовать mysqli, имхо. Добавлено через 1 минуту и 36 секунд думаю, что больше пишу руками потому что не сталкивался с переносом на другой язык sql --------------------
Случайность - внезапно наступившая неизбежность. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Это не абстрагирование, это конструктор. Смысла в нем лично я не вижу. Обычно при его создании руководствуются туманными представлениями о прекрасном будущем и соображениями экономии кода. В итоге получается сильно наоборот.
Абстрагирование - это, скорее, ORM. |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Ипатьев, да, возможно я выбрал не то слово, но все-таки?
|
|||
|
||||
| IZ@TOP |
|
||||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Для формирования запросов к базе я использую в своих проектах три подхода:
1. Конструктор запросов. Легкий, для простейших выборок. Грубо говоря, выглядит вроде:
2. Подготовку (prepare) запросов с плейсхолдерами. В основном для UPDATE/DELETE/INSERT. Пример:
3. Громоздкие запросы пишу руками. Противникам конструкторов могу сказать, что я не фанат этой идеологии, но порой так гораздо удобнее. Особенно, когда речь идет о добавлении фильтров в произвольном порядке на определенных условиях (пользователем, к примеру). Тем более, что в своей модели я всегда закладываю анализатор и бенчмарк запросов, который при девелоперской разработке можно посмотреть и поправить при необходимости. Добавлено через 3 минуты и 8 секунд Вообще, помимо работы с формированием SQL'я, используется множество подходов при работе с результатом выборки. Я использую обертку для каждого типа выборки, которая предоставляет необходимый интерфейс для работы с данными в моем приложении. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
||||
|
|||||
| rMaveric |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
Устраивают самописный конструктор + для сложных запросов рукаими. юзаю mysqli
Была необходимость переноса проекта на MSSQL решилось заменой файла запросов к БД переписанную для новой реализации. -------------------- |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
rMaveric, если не сложно, какой интерфейс предоставляет ваш самописный конструктор?
IZ@TOP, поскольку с конструкторами запросов я никогда не сталкивался, не могли бы вы чуток подробнее рассказать о них, как используются, как примерно работают? |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
До использования сабжа юзал самопальный, так вот даже названия методов и их использование совпали. Из этого я понял, что мой код очень даже на уровне)) Так вот я перешел на Zernd_Db: много драйверов для разных СУБД, отличная документация, качественный код, поддержка. И очень активнор развивается. Поэтому писать что-то свое, когда есть Zend_Db... Zend_Db_Table не юзаю, ибо мой скаффолдинг переписывать лень - все проверено и работает. Тебя же это не ограничит, поэтому юзай и его. По поводу ORM, то простые вещии мне проще сделать на недоорм(своя реализация на ZF), а сложные SQL-запросами. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Не могу не согласиться. Если ты не знаешь за что взяться и как писать - используй то, что предлагают тебе создатели языка. Как работают конструкторы рассказывать бессмысленно, это понятно из названия. Используя ООП подход вы просто задаете какие части запроса и как должны быть составлены, далее конструктор просто собирает все данные в исходный SQL и выполняет. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |