|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.07.2008, 15:18 | #1 |
Регистрация: 31.07.2008
Сообщений: 6
|
Правильная организация класса для работы с таблицей mysql
У меня, собственно, такой вопрос. Сейчас занимаюсь написанием небольшой CMS для сайта, поставил себе целью по максимуму использовать ООП. Хочу получить правильные с логической точки зрения классы для работы с таблицами.
Для примера. Есть у меня таблица pages, которая состоит из полей id, title, и текст и нужна для вывода статических страниц на сайте. Мне нужен класс, который будет выполнять следующие функции: -добавление записи; -редактирование записи; -удаление записи; -сбор данных и вывод существующей записи. Получилось вот что, но я думаю, что это не совсем правильно: PHP код:
Метод select_page($id) выбирает id страницы, с которой будем работать. Метод init_page() загружает остальные данные по уже определённому id. Метод delete_page() удаляет загруженную страницу. Метод edit_page() редатирует её. Сомнения возникли, когда стал писать метод add_page. Как то нелогично выходит, определять id мы не будем. Вобщем метод работает как функция, которой могло бы и не быть в классе. Как правильно? Может быть создавать объект, задавать его данные, а потом уже делать что-то вроде add_page()? Но это ставит под вопрос остальные мои методы. Вобщем ситуация простая, хотелось бы спросить у компетентных людей, как бы они организовали эту несложную задачу. |
31.07.2008, 16:21 | #2 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Цитата:
А вообще в такой задачи трудно что-либо предложить, сделайте, например так: PHP код:
E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 31.07.2008 в 16:24. |
|
01.08.2008, 16:07 | #3 |
Регистрация: 31.07.2008
Сообщений: 6
|
Это не совсем то, что мне хотелось бы видеть... Использование классов получается нецелесообразным. Может кто-то может подсказать общую структуру и суть класса, который бы использовался для работы с SQL в целом? Функции: добавление, удаление, редактирование, просмотр. Просто он же должен работать с разными таблицами и полями - как это сделать удобнее всего?
|
01.08.2008, 16:47 | #4 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
Кстати, смотрите:
PHP код:
Последний раз редактировалось SkyM@n; 01.08.2008 в 16:50. |
01.08.2008, 17:06 | #5 |
Регистрация: 31.07.2008
Сообщений: 6
|
Мне пришла в голову некоторая идея, хочу у вас узнать имеет ли она право на жизнь. Хочу сделать класс для работы с MySQL. Методы - подключение к БД, выбор таблицы, отключение, удаление, редактирование, добавление. Для редактирования и добавления в кач-ве аргумента подавать массив пар поле-значение или 2 массива - один с полями, другой со значениями и потом основываясь на этом генерировать запрос. Также можно для удобства сделать метод, который будет готовить эти массивы для методов добавления-редактирования.
Нормально? |
01.08.2008, 17:26 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Посмотри прикрепленный файл. Давно использую нечто подобное в своих проектах.
Есть базовый класс: db_base. В нем реализованы методы либо абстрактно, либо те, которые не привязаны к конкретной СУБД. Есть класс, драйвер конкретной СУБД, например: MySQL.php, класс db extends db_base В этом классе реализованы только те методы, которые зависят от выбора конкретной СУБД (MySQL, PostgreSQL и т.п.), т.е. это драйвер конкретной СУБД. Есть еще скрипт с набором функций: db.php В нем создается объект класса db (выбранного драйвера СУБД) и реализована оболочка для всех функций класса. Например: PHP код:
Зачем надстройка над классом? Да это что бы не писать что-то типа такого: PHP код:
E-Mail: arigato.freelance@gmail.com
|
01.08.2008, 18:03 | #7 |
Регистрация: 31.07.2008
Сообщений: 6
|
Спасибо.
Форма и способы мне сейчас не так интересны, как суть. Т.е. ход мыслей правильный? Есть класс для работы с БД. Т.е. все методы, нужные для обработки данных, не привязанных к какому-то типу БД. Потом расширенные классы для работы с каждой БД в отдельности. Я понимаю, что вы сейчас сказали то же самое, но мне хотелось описать это своими словами и получить подтверждение. За файлы и текст спасибо, но мне в данный момент хочется написать все самому, без оглядки на существующие готовые классы. |
01.08.2008, 18:10 | #8 |
Регистрация: 31.07.2008
Сообщений: 6
|
Очень понравился ваш вариант, но копипастить смысла нет - хочется до всего дорасти самому, но, безусловно, оглядка на такой продукт в моменты сомнений будет очень полезна. Ещё раз спасибо.
|
01.08.2008, 19:57 | #9 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,646
|
Цитата:
P.S. пример не для копипаста, а для демонстрации подхода. Можете еще глянуть, как такое реализуется в готовых движках, например, в phpBB2 реализован похожий подход (но мне он не очень понравился). Привязывать код к работе только с конкретной СУБД (например, MySQL) не дальновидно. Завтра может потребоваться другая СУБД, а переписывать все скрипты - неоправданно трудная задача. E-Mail: arigato.freelance@gmail.com
|
|
08.08.2008, 08:48 | #10 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
Я пользую для общения с мускулом следующее:
Вобщем далеко от совершенства, но общая идея смысла не лишена. Вам же не конечный результат требуется, а реализация потенциала ООП? Тут она есть)) Код:
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Правильная работа из под Win с прерываниями в МАСМ | Stilet | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 10.06.2008 15:19 |
MySQL нужна библ. для Visual C++ (MySql++) | Alexoid | Visual C++ | 8 | 07.05.2008 18:29 |
как создать субд в Delphi для работы с MySqL | Savl | БД в Delphi | 1 | 12.03.2008 14:10 |
Правильная программа? | Надюха | Помощь студентам | 10 | 28.09.2007 14:40 |
Работа с таблицей без БД | Гр_ | БД в Delphi | 3 | 06.06.2007 16:31 |