Здравствуйте Дамы и Господа !
Возник вопрос, так как на работе пошли конфликты о том, что лучше.
Небольшая предыстория:
Цитата |
PHP как язык программирования, создавался изначально ни как Объектно Ориентированный, Структурно Функциональный |
Цитата (UnWind @ 27.04.2011 - 18:41) |
То, что ООП лучше структурно функционального, это и так понятно |
Цитата (UnWind @ 27.04.2011 - 19:31) |
больших проектов на PHP не напишешь |
Цитата |
facebook - просто маленькая капля в большом океане. |
Цитата |
UnWind Дело нев личном отношении а количестве пользователей. Проект большой и работает. Я так считаю что и на пыхе можно писать большие проекты но только зачем?? |
Цитата (UnWind @ 27.04.2011 - 14:51) |
Facebook причем если мне память не изменяет, всю обработку использует при помощи CGI окружения, т.е. C/C++. |
Цитата (UnWind @ 27.04.2011 - 14:31) |
После чего, вернул клиенту деньги и больше никогда не соглашался на работу с скриптами написанными в стиле PHP. Переделать в процедурку - запросто, но сидеть и разбираться + дорабатывать, уж лучше к кому нибудь другому, только не ко мне. |
Цитата |
1001 инклуд |
Цитата (UnWind @ 27.04.2011 - 15:10) |
Против того, что бы лепить классы туда, где всё можно сделать проще. Что бы потом в этой лепизне не разбирались пол года, а всё из-за того, что какой то кусок дибила посчитал, что класс на классе с кучей наследований - это круто, и если это круто - надо в каждую строчку по классу влепить. |
Цитата |
Я не стал влезать в дискуссию twin'а и linker'а по этому поводу, но тут скажу - не имеет значения в чем разбираться в процедурке или в ооп. |
Цитата |
Однако в случае ООП есть четкая структура кода, разрешение зависимостей, и ещё много всяких плюшек, которых нет в процедурке (но которые при желании конечно можно накостылить). |
Цитата (UnWind @ 27.04.2011 - 20:28) |
Сам ООП мне нравится, но совершенно не в PHP. |
Цитата |
Наступит время, и вы устанете выдумывать длинные имена функциям, и бить себя в лоб, ибо дали одно и тоже имя разным за предназначением объектам. |
Цитата |
То, что призван делать язык PHP, никак не должно быть целым приложением. Это набор разных прграмм. И при нормальной структуризации в отдельной программке (модуле или еще как назвать) разобраться в сто раз проще, чем блудить в этих связях. |
Цитата |
Рано или поздно, потребность в пространстве имен будет стремительно увеличиваться. |
Цитата |
Всем, кто хочет проигнорировать ООП, и в частности ООП в пхп, предупреждаю, вы об этом пожалеете, ибо все равно изучать и использовать вас заставит новая планка сложности. |
Цитата (twin @ 27.04.2011 - 15:26) |
И при нормальной структуризации в отдельной программке (модуле или еще как назвать) разобраться в сто раз проще, чем блудить в этих связях. |
Цитата (Arni @ 27.04.2011 - 15:27) |
И уверен, 2-3 годика поставят на процедурном программировании жирный прижырный крест, ибо человек склонен к ошибкам, а в процедурном программировании наломать дров гараздо проще. |
Цитата (UnWind @ 27.04.2011 - 15:28) |
Против приложения на классах, а именно web приложения на PHP построенное на классах. |
Цитата (kirik @ 27.04.2011 - 20:43) |
Если процедурный подход должен умереть, то С уже давно червяки должны есть smile.gif |
Цитата |
Так чем конкретно не нравится в PHP? Чем ООП в java круче ООП в php? |
Цитата |
ООП в PHP что такое в моем понимании в виду взгляда на программы сторонних разработчиков и стороны логики и здарового смысла ? ООП вообще не нужно в PHP, так как PHP не создан для больших крупномоштабных проектов, в которых программу стоило бы разбивать на множество классов и наследований, для данных целей сщуествуют Java, Python, Perl, C. Если же, не имеет разумности пихать везде классы (когда программа маленькая и процедурное мышление было бы гораздо приемлемым), смысл ООП в PHP вообще ? Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%. В связи с этим, у людей появляется мнимое впечатление того, что ООП это круто, потому, что это встречается в любой программе, даже тупо где Hello World выведенно через класс. После чего, стая новичков, которые в последствии превращаются в нубов начинают пихать классы куда непоподя, а потом мучайся и разбирай их код в случае необходимости. Причем готовые классы зачистую такие криворукие и пишут. |
Цитата |
Напишу теперь в одном посте и собиру всё в кучу |
Цитата (UnWind @ 27.04.2011 - 20:45) |
Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%. |
Цитата (UnWind @ 27.04.2011 - 20:45) |
В связи с этим, у людей появляется мнимое впечатление того, что ООП это круто, потому, что это встречается в любой программе, даже тупо где Hello World выведенно через класс. |
Цитата (UnWind @ 27.04.2011 - 20:45) |
Причем готовые классы зачистую такие криворукие и пишут. |
Цитата |
- в С объектов нет |
Цитата |
Смысл создавать процедуры, которые ты "... в будующем ты не будешь их использовать в других своих разработках..." |
Цитата |
У людей которые не думают сами - да. |
Цитата |
То же самое верно и для функций. |
Цитата (UnWind @ 27.04.2011 - 15:45) |
так как PHP не создан для больших крупномоштабных проектов, в которых программу стоило бы разбивать на множество классов и наследований, для данных целей сщуествуют Java, Python, Perl, C. |
Цитата (UnWind @ 27.04.2011 - 15:45) |
Так же, смысл создавать эти же классы, если в будующем ты не будешь их использовать в других своих разработках ? Так делает около 90%. |
Цитата (UnWind @ 27.04.2011 - 15:45) |
После чего, стая новичков, которые в последствии превращаются в нубов начинают пихать классы куда непоподя, а потом мучайся и разбирай их код в случае необходимости. |
Цитата (UnWind @ 27.04.2011 - 20:52) |
Дык и для чего изобрели велосипед, если разницы нет ? |
Цитата |
Вот скажи, чем в наше время отличается php от python? Не надо только говорить что php === personal home page. |
Цитата |
Вот например twin он не пользуется ООП но он то его знает. НЕ стоит путать горячее с мягким. |
Цитата |
НО.. придумать, а затем создать ту самую прозрачную структуру с процедурным подходом чаще всего сложнее, чем разбить мир на объекты и с ними уже работать. |
Цитата (UnWind @ 27.04.2011 - 18:41) |
Не может ли кто то помочь разобраться, что в действительности лучше ? |
Цитата (UnWind @ 27.04.2011 - 21:00) |
Я буду программу на ООП кодить на Java, родом языке для ООП, а не буду писать приложение на php чисто для понту. |
Цитата (UnWind @ 27.04.2011 - 16:00) |
Как минимум скоростью обработки машиной и лучшим взаимодействием. |
Цитата (waldicom @ 27.04.2011 - 15:42) |
Мочало. |
Цитата |
Я на днях создал на форуме тему по Nested Sets. Никто туда даже носом не ткнул. Что это было по вашему? Слишком просто? |
Цитата (twin @ 27.04.2011 - 20:09) |
Можно посмотреть на тему? |
Цитата |
Меня интересует модуль управления страницами на базе наработок (в стиле процедуры и функции), но с расширенным функционалом. |
Цитата (twin @ 27.04.2011 - 20:34) | ||
Нука вот это место поподробнее. Ничего я не понял. Особенно не понял, причем тут вообще ООП-неООП. На базе каких наработок? C каким "расширенным функционалом"? В теме совсем не тот вопрос twin, что там у нас с набором функций? |
Цитата |
Смею предположить, что мне будет предложено, созжать два файла пхп, в первом набор функций для обобщающего управления деревом Nested Sets, второй, с нобором функций, которые дополнят первый. |
Цитата |
Потом я создал потомка, который наследует методы и поля класса управляющего деревом, ну и дополнил его методами, которые позволяют одним вызовом, создать страницу, просто указав ,родителя. |
Цитата (twin @ 27.04.2011 - 21:02) |
Так нет. Я бы предложил сделать это одним классом. И вообще не делить. Ибо задача достаточно специфична, функционал однотипен. Не вижу никакого смысла делить его на разные классы, тем более файлы. |
Цитата |
Вот тут то я вас и поймал. |
Цитата |
любое дерово Nested Sets требует наличия полей в базе данных таких как левый, правый ключи, уровень. |
Цитата |
И класс, которые управляет деревом, спокойно можна применить в любой другой задаче. |
Цитата |
И попытки повторять код в разных классах одной системы, обозвут г*внокодом. |
Цитата |
повторять код в разных классах |
Цитата |
Но вы не сможете себе этого позволить в условиях рынка, когда вашу систему нужно продать. |
Цитата |
И кстати, вы всетаки используете ООП. И это я понимаю. |
Цитата (Arni @ 27.04.2011 - 17:24) |
И попытки повторять код в разных классах одной системы, обозвут г*внокодом. Можете быть в этом уверенны. Плевать на мнение других можно, часто даже нужно. Но вы не сможете себе этого позволить в условиях рынка, когда вашу систему нужно продать. И ваше мнение, личное, и может даже правильное. НЕ ОЦЕНЯТ. |
Цитата (Arni @ 27.04.2011 - 17:24) |
И кстати, вы всетаки используете ООП. И это я понимаю. |
Цитата |
К тому же такое мнение у меня было изначальным, что ООП - это не для PHP, больших проектов на PHP не напишешь, а для маленьких - это глупо. |
Цитата |
Против того, что бы лепить классы туда, где всё можно сделать проще. |
Цитата |
Ты же операционную систему на PHP писать не будешь или на Java ? |
Цитата |
Да так, насмотрелся на извращения на работе, в сети и почти везде куда только не плюнь. |
Цитата |
А еще больше вырубает, когда сядет какой нибудь чел, напишет в классе всю программу, потом создаст файл index.php и съинклудит файл index2.php в котором класс находится. Такое вообще очень часто заметить можно. |
Цитата |
Дык я же и говорю, я не против ООП, просто если там написанно знание ООП, то я его должен знать, но зачистую инструмент для разработки - подбирает сам разработчик, а не его начальство. |
Цитата (ApuktaChehov @ 28.04.2011 - 01:41) |
Вот как это сделать на процидурке? |
Цитата |
единый класс, который будет управлять страницами и деревом в целом. |
Цитата |
объектно-ориентированная логика приложения. |
Цитата |
Так нет. Я бы предложил сделать это одним классом. И вообще не делить. Ибо задача достаточно специфична, функционал однотипен. Не вижу никакого смысла делить его на разные классы, тем более файлы. |
Цитата |
Я как раз наоборот написал. Что сделал бы библиотеку для дерева, которую можно использовать где угодно. А как работать со страницами или нестраницами - другая задача совсем. И в мыслях не было все плести в один клубок. |
Цитата |
в первом набор функций для обобщающего управления деревом Nested Sets, второй, с нобором функций, которые дополнят первый. В результате, у нас сырбор с горой функций. И пространство имен, загромажденное именами типа parent, left_key, right_key, level, + куча фигни |
Цитата |
для обобщающего управления деревом |
Цитата |
второй, с нобором функций, которые дополнят первый. |
Цитата |
left_key, right_key, level, + куча фигни |
Цитата |
ошибка в самой архитектуре. Которая возможна как раз при таком расслабляющем свойстве, как наследование. |
function function_name($str) {
return $str;
}
Цитата |
Считай, что остальные файлы-классов являются часть некоего большого проекта |
Цитата |
ООП отлично решает задачи при разработке сложных проектов, над которым трудится как минимум 2 человека |
Цитата |
Красоту и мощь ты почувствует только в достаточно крупном проекте |
Цитата (linker @ 29.04.2011 - 15:48) |
Прелесть фреймворков в том, чтобы именно удешевить и упростить не только разработку, но и поддержку с доработкой. Банальный пример, Вася нарисовал один сайт одним вариантом, второй сайт другим вариантом, третий сайт ещё иначе, в результате наклепал процедурками 10 абсолютно разных по реализации сайтов. Всё это барахло вдруг досталось тебе, потому что Вася уехал за бугор и тебя наняли для доработки функционала на всех этих 10 сайтах. И вот тебе бедному копаться в этом самописном гумне хрен знает сколько времени. А если бы Вася написал все эти 10 сайтов на одном фреймворке, то реализация была бы одна, только функционал разный, в результате ты счастливый и довольный, быстро доработав функционал получил свои заветные денюжки и уже трудишься на другим заказом. |
Цитата |
И вот тебе бедному копаться в этом самописном гумне хрен знает сколько времени. |
Цитата |
написал свой Фреймворк, который весит 3.8кб |
$form->setMethod('post')
->setAction('/mypage')
->addDecorator('formElements')
->addDecorator('htmlTag', array('tag' => 'table'))
->addDecorator('form');
$form->addElement('text', 'username', array('disableLoadDefaultDecorators' => true, 'required' => true, 'label' => 'Логин'));
$form->username->addDecorator('viewHelper')
->addDecorator('errors')
->addDecorator(array('tdTag' => 'htmlTag'), array('tag' => 'td'))
->addDecorator('label', array('tag' => 'td'))
->addDecorator(array('trTag' => 'htmlTag'), array('tag' => 'tr'));
echo "<form action=\"/mypage\" method=\"post\">\r\n";
echo $errors;
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n"
. "<tr>\r\n"
. "<td>\r\n"
. "Логин <input name=\"username\" type=\"text\" />\r\n"
. "</td>\r\n"
. "</tr>\r\n"
. "</table></form>";
<form action="/mypage" method="post">
<?php echo $errors; ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Логин <input name="username" type="text" /></td>
</tr>
</table>
classно чуствую - закидают
{
public function display($text)
{
if(!print ($text))
throw new Exception('Фууууу!');
}
}
Цитата (twin @ 30.04.2011 - 01:02) |
Что вот это такое?$form->setMethod('post') |
Цитата (twin @ 30.04.2011 - 12:53) |
Причем сделаем это синхронно. |
Цитата (Zerstoren @ 30.04.2011 - 14:18) |
ненавижу растягивать на 200 строк, что можно сделать за 50 |
Цитата |
Думаю, что после всего этого, ваше отношение к ООП и процедурке не измениться. |
Цитата (ApuktaChehov @ 1.05.2011 - 03:39) |
И сошлись они в неравной схватке, не на жизнь, а насмерть. Думаю, что после всего этого, ваше отношение к ООП и процедурке не измениться. Кто-нибудь думает иначе? |
Цитата (sergeiss @ 1.05.2011 - 18:26) |
Arni - ты не озвучил, в какую сторону меняется мнение ![]() |
Цитата (Arni @ 3.05.2011 - 00:28) |
Запрос-Ответ. И некогда городить кучу наследований, связей, и прочей хрени. Потому что в отличии от приложения которое загрузилось в память и работает там долго и нудно, наше уже за доли секунды будет разрушено в пух и прах. И через те-же доли секунды, все начнется опять. |
Цитата (linker @ 3.05.2011 - 09:14) |
Современные веб-приложения уже далеко не те, что были скажем год-два и более назад. |