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

Статус
В этой теме нельзя размещать новые ответы.

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') действительно удобнее вместо записи обычного запроса). В остальном не вижу необходимости.
 
А например подключение к базе будешь каждый раз передавать в такую отдельную функцию или в каждой отдельной функции его заново писать будешь?
 
А представьте, что движок должен поддерживать несколько типов баз данных, тогда в функцию класса можно будет встроить автоматическое формирование запроса к базе в зависимости от ее типа, иначе же придется каждый раз в коде писать if ( база такая-то ) { запрос такой-то}

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

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

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

Вы пример неправильно взяли. ООП в пхп (и не только) очень важен и полезен, однако он не всегда целесообразен.
В ипб целесообразен, а для хоум паги нет, например.
 
А например подключение к базе будешь каждый раз передавать в такую отдельную функцию или в каждой отдельной функции его заново писать будешь?
не понимаю, о чем вы... Подключение к базе:
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 ( база такая-то ) { запрос такой-то}
ведь можно вставить эти if в саму функцию...
 
HatoL в какую функцию?
 
  • Заблокирован
  • #6
где MYSQL_HOST, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE - константы, объявленные в файле settings.php, который подключается в начале скрипта.
А если у меня сайт работает с одной базой, а форум с другой?
 
Позволю себе включиться в дискуссию.

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

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

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

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

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

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

PS ооп на 100% оправданно для больших проектов которые пишут большое количество людей одновременно. имхо.
 
HatoL в какую функцию?
вы писали:
А представьте, что движок должен поддерживать несколько типов баз данных, тогда в функцию класса можно будет встроить автоматическое формирование запроса к базе в зависимости от ее типа, иначе же придется каждый раз в коде писать if ( база такая-то ) { запрос такой-то}
а что мешает встроить автоматическое формирование запроса к базе не в функцию класса, а просто в функцию?

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

Я не очень хочу спорить потому что это редко приводит к чемто хорошему, но у меня к вам вопрос: вы написали фактически что и процедурно писать плохо и ооп - зло.
Как же вы пишете?:D
наверно он имел ввиду, что обсуждение ООП является злом, а не само ООП.
 
а что мешает встроить автоматическое формирование запроса к базе не в функцию класса, а просто в функцию?
Ну наверняка тогда функция будет не одна, тогда к чему городить кучу функций для работы с базой и не объединять в один класс?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху