Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Класс для работы с БД [2]
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Думаю, есть смысл сделать функцию query_execute не private, а public.
Это потому, что если я хочу скажем сделать
ALTER TABLE, ANALYZE, CHECK и т.п. - запросы, относящиеся к DDL, а не к DML, мне нечем воспользоваться в этом классе, а функций на все запросы такого типа не написать (вернее, если и написать, то будет громоздко, неудобно и по факту повторять то, что уже есть в MySQL - выполнять переданный запрос).
Да и запросы DML не все можно определить при помощи функций класса.
Например, я хочу сделать
INSERT .. SELECT или вложенный запрос, или UNION или JOIN или SELECT * FROM myTable USE INDEX(myIndex) и т.п. - всего и не перечислишь
- мне опять же нечего использовать и опять же всего нельзя написать в классе.
Иначе говоря, без возможности писать запрос напрямую, класс сможет выполнять лишь самые простенькие запросы, чего может быть недостаточно (лично мне было бы очень недостаточно).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Eihwaz
Отправлено: 18 Апреля, 2008 - 21:57:03
Гость
Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
Да, я уже пытался пользоваться классом в разработке, пришел к мысли, что нужно позволить пользователю писать свои запросы, убрать массивы из запросов, и т.п. Упростить, вобщем, но это была хорошая практика именно для меня, потому что я еще не особо уверенно пишу что-то. Плюс неудобно, когда функция принимает много параметров. Я, как автор, еще с грехом пополам их помню, но если этим классом будет пользоваться сторонний разработчик, то думаю, моей семье будет шибко икаться.
Так что мечта о гарантированно валидных запросах таки останется мечтой
Вобщем, по-большому счету должны остаться такие штуки, как сам, собственно, запрос к БД, получение массива из результатов, получение объектов, numrows, и т.д. Короче, курю мануалы, завтра что-то уже будет, я думаю
P.S.: Предыдущий вопрос насчет того, как поступать в классами статей и прочего прошу считать закрытым - вопрос был глупый, никто не мешает мне в классе статей только формировать запрос к БД, а выполнять его классом для работы с БД.
Eihwaz
Отправлено: 20 Апреля, 2008 - 18:03:00
Гость
Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007
$database->select( params )// тут возвращается обект базы данных
->where( params )
->exec();//выполняем запрос
?>
(Добавление)
Это я примерно написал как можно использовать классы в PHP 5. Так что ошибки искать нестоит, идею поймите ;) (Добавление)
Точно так же можно делать с такими вещами как limit, join и т.д.
Eihwaz
Отправлено: 25 Апреля, 2008 - 14:04:27
Гость
Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
-SCHATTEN- Это мы тогда возвращаемся к концепции формирования массивов для $this->select, $this->where и т.д., потому что если эти параметры будут строковыми, разработчику все-равно нужно будет руками расставлять все кавычки...
Черт, очень хочется написать подобное, но постоянно думаю об удобстве использования... Но думаю таки попробую, хотя в своей CMS сейчас использую последний выложенный класс.
Вобщем, надо думать, спасибо вам обоим за потраченное время, прокачался немного
-SCHATTEN-
Отправлено: 25 Апреля, 2008 - 14:23:39
Пользователь
Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006 Откуда: Оттуда !
Помог: 0 раз(а)
Короч быстро не обещаю, но попробую написать как будет время примерно.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.