[дискуссия] Зачем применять ООП в PHP ? (На примере IPB)

Тема в разделе "PHP", создана пользователем HatoL, 8 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    Немного рассматривал код в Invision Power Board и так и не понял, зачем там нужно было применять классы. Допустим там есть функция внутри супер-класса, которая упрощает выборку данных из БД. Но блин, что помешало им не вкладывать эту функцию в класс, а сделать просто как отдельную функцию и вместо такого кода:
    Код:
    $ipsclass = new ipsclass();
    $ipsclass->db_select('SELECT' => '*')
    писать такой:
    Код:
    db_select('SELECT' => '*')
    Напрашивается вопрос: ЗАЧЕМ ? Зачем надо было тратить лишние ресурсы на вызов функции из-под класса, чем использовать просто вызов функции ?

    Также не вижу смысла в использовании функций и классов для работы с БД, ведь полный запрос SELECT * FROM bla LEFT JOIN blah ON blah.id = bla.id выглядит не таким уж и страшным. Смысл использования напрашивается только один - когда БД использует префиксы (чтобы каждый раз не писать FROM ' . DB_PREFIX . 'table...) и в использовании INSERT INTO (передача параметров в функцию вида array('fieldname' => 'value') действительно удобнее вместо записи обычного запроса). В остальном не вижу необходимости.
     
  2. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    А например подключение к базе будешь каждый раз передавать в такую отдельную функцию или в каждой отдельной функции его заново писать будешь?
     
  3. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    А представьте, что движок должен поддерживать несколько типов баз данных, тогда в функцию класса можно будет встроить автоматическое формирование запроса к базе в зависимости от ее типа, иначе же придется каждый раз в коде писать if ( база такая-то ) { запрос такой-то}

    А представьте, что используется система кеширования запросов и функция не обязательно возвращает данные от базы напрямую, а может их брать из файла.

    А представьте...

    Да куча оправданий в пользу ООПа :)

    Вы пример неправильно взяли. ООП в пхп (и не только) очень важен и полезен, однако он не всегда целесообразен.
    В ипб целесообразен, а для хоум паги нет, например.
     
  4. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    не понимаю, о чем вы... Подключение к базе:
    PHP:
    mysql_connect (MYSQL_HOST MYSQL_USERNAME MYSQL_PASSWORD) or die ('Can\'t connect to database');
    mysql_select_db (MYSQL_DATABASE) or die ('Can\'t select db');
    где MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE - константы, объявленные в файле settings.php, который подключается в начале скрипта.
    ведь можно вставить эти if в саму функцию...
     
  5. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    HatoL в какую функцию?
     
  6. Jameson

    Jameson Читатель

    Заблокирован
    Регистр.:
    25 июн 2007
    Сообщения:
    406
    Симпатии:
    92
    А если у меня сайт работает с одной базой, а форум с другой?
     
  7. cyberquoter

    cyberquoter Создатель

    Регистр.:
    26 июн 2008
    Сообщения:
    22
    Симпатии:
    6
    Позволю себе включиться в дискуссию.

    Вы посмотрите код VBulletin - будете плакать горче, чем от IPB :)
    По поводу ООП:

    1. Не нужно говорить, что он целесообразен не везде... Даже генерацию хоумпаги нужно делать с применением паттернов, ибо времена проходят. код перерабаытвается, аппетиты растут - дописывать все-равно придется. Будете разбирать весь процедурный код годика через 2 - материтцо бу :)

    2. Применение ООП нельзя обсуждать, в принципе. Ибо это есть зло :)

    С удовольствием поспорю с тем, кто будет оспаривать :)
     
  8. akgrad

    akgrad

    Регистр.:
    26 июл 2008
    Сообщения:
    161
    Симпатии:
    29
    Я не очень хочу спорить потому что это редко приводит к чемто хорошему, но у меня к вам вопрос: вы написали фактически что и процедурно писать плохо и ооп - зло.
    Как же вы пишете?:D

    PS ооп на 100% оправданно для больших проектов которые пишут большое количество людей одновременно. имхо.
     
  9. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    вы писали:
    а что мешает встроить автоматическое формирование запроса к базе не в функцию класса, а просто в функцию?

    а причем здесь ООП ? Обычно форум представляет собой самостоятельные скрипты по отношению к основному сайту. Если это не так, то база обычно одна, т.к. скрипты вместе взаимодействуют. Если вы используете такой изврат, который описали выше, то это только говорит о плохом структурировании кода.

    наверно он имел ввиду, что обсуждение ООП является злом, а не само ООП.
     
  10. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Ну наверняка тогда функция будет не одна, тогда к чему городить кучу функций для работы с базой и не объединять в один класс?
     
Статус темы:
Закрыта.