Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008
Помог: 8 раз(а)
[+]
Давно хотел поговорить на эту тему. Интересно, каким образом вы осуществляете работу с БД? Ну то, что отдельным классом, это и ежу понятно. Меня же интересует структура общего макета сайта. Например:
Ну и так далее. Потом идет непосредственно основной контент, где тоже куча запросов к БД. Впрочем, кому я рассказываю. В общем, погуглив на данную тему я остановился на двух вариантах:
1) Делаем обычный класс, передаем его экземпляр во все остальные классы, или же просто делаем его родителем всех остальных классов.
2) Объявляем класс для работы с БД как статический. В этом случае его можно использовать где угодно и когда угодно без создания экземпляров, но при таком подходе создается излишняя задержка, т.к. статические классы работают медленнее.
Можно еще в каждом классе отдельно создавать экземпляры класса БД, но что-то мне подсказывает, что это маразм.
Кто что думает по этому поводу, кто как делает, поделитесь навыками, не стесняйтесь!
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Toxa пишет:
каким образом вы осуществляете работу с БД? Ну то, что отдельным классом, это и ежу понятно.
А зачем нужен обязательно отдельный класс? Работа с БД обычно - это 3 строчки кода коннекта, вынесенные в отдельный файл и куча mysql_query в нужных местах. Зачем тут класс?
Создавать в каждом классе новый экземпляр другого класса, который не нужен в таких количествах - это конечно худший вариант, он ем и думать не надо.
Toxa
Отправлено: 27 Мая, 2010 - 20:13:32
Посетитель
Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008
Помог: 8 раз(а)
[+]
ну как же, а обработка ошибок? а плейсхолдеры? а логи наконец?.. Я пока что остановился на статическом варианте.
Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008
Помог: 8 раз(а)
[+]
уже три часа ночи, а я все никак не могу успокоиться.
Скачал CMS mkportal. Там тупо во всех функциях всех классов, где нужна работа с БД (а это 90%) объявлена переменная $DB как global !
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Toxa Использование классов и ООП действительно полезно поскольку помогает структуризировать код и сделать требуемую инкапсуляцию - но при этом гораздо важнее соблюдать саму ООП-парадигму и к примеру не включить одни экземпляры классов в другие используя заместо них наследование и интерфейсы
Также нельзя сказать чтобы статические функции работали медленее - ведь по сути в PHP отсутствуют именные и пакетные области видимости как таковые и хороший способ создать их это расширить обращение к функции как в статическому методу класса - не зря для этой операции служит оператор :: расширения текущей области видимости - и таким образом статическая переменная или метод есть не что иное как соответствующие объект в определенной области имен А вот динамические свойства и методы уже требуют связи с определенным экземпляром класса и их выполнения в его контексте - на переключение которого требуется некоторое время
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Toxa
Отправлено: 28 Мая, 2010 - 15:01:47
Посетитель
Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008
Помог: 8 раз(а)
[+]
JustUserR, спасибо конечно, но все это я уже читал в книжках и не один раз.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Toxa пишет:
JustUserR, спасибо конечно, но все это я уже читал в книжках и не один раз.
Пожалуйста! Кстати как вариант для работы с БД можете использовать встроенный в PHP класс mysql - и хранить его экземпляры в глобальном массиве и по надобности обращаться к ним из кода
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
pitbul
Отправлено: 28 Мая, 2010 - 16:29:31
Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Май 2010
Помог: 0 раз(а)
Можно попробовать поюзать PDO или ADOdb. Ничего самому не надо писать , готовые классы и методы.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
pitbul пишет:
Можно попробовать поюзать PDO или ADOdb. Ничего самому не надо писать , готовые классы и методы.
А при работе на PHP под windows-сервер с базой данных типа Microsoft SQL server можно использоывть напрямую OLE-взаимодействие - благо каждый компонент от microsoft его предоставляет
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.