Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объектное vs процедурное, программирование в PHP 
:(
    Опции темы
Daevaorn
Дата 7.8.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 1
Всего: 70



Цитата(Mal Hack @  7.8.2007,  16:17 Найти цитируемый пост)
А на практике где применимо? Мне чисто из любопытсва интересно. 

Ну как же, во всех RAD MVC фреймворках: клонах и не клонах RoR.
PM MAIL WWW   Вверх
Mal Hack
Дата 7.8.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



С фреймворками не работал, к сожалению, либо очень мало и не на PHP...
PM ICQ   Вверх
Fally
Дата 7.8.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 17.8.2006
Где: Dahla

Репутация: нет
Всего: 4



Daevaorn, кстати, меня всё интересует... все хвалят ORM... как я понял, то с его помощью можно и загружать данные из базы в объект. Если я правильно понял, то вопрос: Откуда гарантия что запрос к БД будет оптимальным с точки зрения производительности?


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Daevaorn
Дата 7.8.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 1
Всего: 70



Цитата(Fally @  7.8.2007,  16:38 Найти цитируемый пост)
Откуда гарантия что запрос к БД будет оптимальным с точки зрения производительности? 

такой гарантии нет. все зависит от авторов ORM библиотеки. благо их щас развелось достаточно много и есть из чего выбрать. но всё равно в нетривиальной ситуации оптимальный запрос напишет только сам человек. поэтому иногда приходится ручками до SQL снисходить. обычно для этого тоже предусмотрены специальные инструменты, которые позволяют даже на основе "ручных" запросов создавать в итоге объекты. Зато ORM очень выручает, когда сложных запросов не много и нужно просто получить список неких объектов без сложных условий. ну и бесплатно получается некая структурность кода
PM MAIL WWW   Вверх
WIPS
Дата 8.8.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 1
Всего: 8



Цитата(Mal Hack @  7.8.2007,  12:56 Найти цитируемый пост)
Согласен, но согласись, в любом случае, практическая реализация в той или иной степени все равно основывается на теоретических понятиях. На них можно и забить, но вот работоспособность, точнее безопасность и оптимальность кода будут большим вопросом стоять.

Согласен, забивать ни на что нельзя. Все потом боками вылезает.

Цитата(Mal Hack @  7.8.2007,  12:56 Найти цитируемый пост)
Ты не совсем меня понимаешь. Я имею ввиду не вызов события, так сказать, как сам факт его появления - клик мышкой по кнопке, а механизм передачи управления, в зависимости от события, определенному программному коду (методу, функции и т.д.).

В одном случае этот механизм реализуется ручками, в другом автоматически, однако у нас по прежнему остается набор входных воздействий и реакций на эти воздействия.


--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
SamDark
Дата 8.8.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 1
Всего: 38



Mal Hack
Я выше дал ссылку на propel. Наверное зря... штука пугающая. Лучше ORM посмотреть на ezpdo. Там всё проще и без заморочек...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Mal Hack
Дата 8.8.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(WIPS @  8.8.2007,  00:38 Найти цитируемый пост)
В одном случае этот механизм реализуется ручками, в другом автоматически

Вот я про это отличие и говорю.

SamDark, посмотрю на досуге.
PM ICQ   Вверх
SamDark
Дата 8.8.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 1
Всего: 38



Цитата
В одном случае этот механизм реализуется ручками, в другом автоматически

Автомат тоже кто-то делал ручками. Что нам мешает один раз сделать и наслаждаться?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
WIPS
Дата 8.8.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 1
Всего: 8



Цитата(SamDark @  8.8.2007,  12:32 Найти цитируемый пост)
Автомат тоже кто-то делал ручками. Что нам мешает один раз сделать и наслаждаться?

Ничего не мешает. Я с этим и не спорю, а наоборот придерживаюсь этого мнения.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
chief39
Дата 31.8.2007, 17:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: нет
Всего: 77



Цитата(Mal Hack @  1.8.2007,  11:41 Найти цитируемый пост)
Модуль - это программная единица, куда вынесены куски программного кода, разделенные по смысловой и модульной нагрузке. 

"Чтобы понять рекурсию, надо понять рекурсию" smile))


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Diesel Draft
Дата 1.9.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: -1
Всего: 5



chief39
+1


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
CyClon
Дата 28.11.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Если писать CMS или что-то, что в дальнейшем будет очень часто модифицироваться, то естественно ООП. Если же нам нужно получить небольшой скрипт, который будет работать на большинстве платформ, причем быстро - тогда процедурное.


--------------------
user posted image
PM   Вверх
cccr85
Дата 13.7.2010, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.7.2010

Репутация: нет
Всего: 2



Прочитал данную тему пока только до середины, и внесу свои 5 копеек.

Я программирую на php. Нигде не учился, все сам. И так, что мы имеем.

Что такое класс? Нет это не class myClass {} а это КЛАСС каких либо повторяющихся вещей, предметов и т.д. 
Теперь что такое объект этого класса? Нет это не $Object = new myClass; А это один экземпляр класса. 

К чему я все это? А к тому что например у нас есть программа, которая работает например на компьютере пользователя, в этой программе есть например кнопочки, и практически все кнопочки похожи по своим характеристикам. Разнятся только действиями при клике на нее, надпись на кнопке. В итоге имеем один базовый класс кнопок, и классы которые расширяют базовый и говорят что делать при клике. 

Теперь для того чтобы создать сколько угодно кнопок, достаточно создать объект кнопки примерно так:

$button = new myButton;          // class myButton extends basicButton {
$button->name = 'Моя кнопка';  // Текст на кнопке

$window = new myWindow;
$window->setButton($button);

Все, кнопка отобразилась на окне, красота? Я думаю да. Понятно все? Да. ООП мне нравиться? Да.


Ок. Разберем еще один пример, играем мы в стратегию, и там есть юниты, все они похожи, но кое в чем разнятся, ёмаё, да это еще один класс и его расширение.

И таких примеров много!!! Но теперь вернемся к нашему php, я пока для себя нашел только один похожий на примеры выше код.

Чуть предисловия:
Класс базы данных. Раньше я делал так, создавал объект базы данных, в котором были методы конекта, отправки запроса, проверки данных, получения результата и т.д. На одном из форумов, или у кого то в библиотеки я подсмотрел идею что класс mysql должен только конектится, и делать запросы, а вот результат отдается в виде объекта, с которым я могу работать. Более того, при работе с результатом есть много общих действий для всего класса ответов на запросы, например освобождение памяти, получение размера, и т.д. Здесь ооп мне понравилось. Я понял его суть. 

В самом начале темы, говорили, что классы = набор функций заключенных в конструкцию class. Как я уже писал выше, класс это чуть другое.

К сожалению других применений ООП в php я пока не вижу. 

В общем вот что я думаю.

Добавлено через 4 минуты и 20 секунд
Цитата(SamDark @ 3.8.2007,  11:29)
WIPSFally
В JavaScript нет ОО в привычном понимании. т.е. классов и объектов. Там совершенно другой принцип, основаный на прототипах. Вот там как раз с натяжкой можно сказать, что "класс сам является объектом", хотя сравнивать прототипное программирование с классическим ОО, а тем более приводить к нему, как многие делают, некорректно.

Позволю себе не согласиться, например все та же злосчастная кнопка является объектом!!! С ней удобно работать как с объектом. 
PM MAIL   Вверх
youri
Дата 13.7.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



отличить ООП-код от не-ООП на самом деле очень просто:
1. Берем исходники
2. Ищем полиморфизм
...
PROFIT
т.е. фактически сама задача определяет, будет ли использовано ООП. Нету юнитов - нету меда ;)

по поводу событийности/визуальности... разделение, естественно, имеет место быть. Хорошо, а что важнее событийность или визуальность? Возьмем, например, java/c# в контексте веба. В php событийность - это запросы от сервера, только все объекты умирают от запроса к запросу. В java/c# это не так (насколько я знаю). Т.е. вроде как событийность есть, но нету визуальности...

но в любом случае я не понимаю, почему это приводит к разделению на тру-ООП и нетру-ООП. Да, написание web- и десктопных приложений отличается. Но я бы сказал, что ООП - это в первую очередь подход к решению поставленной задачи. Да, это умирание объектов от запроса к запросу не вызывает к ним уважения. Но тем не менее, если ООП было удобно применить к некоторой задаче, значит она была решена с использование ООП

по поводу ПОП... я думаю, что ООП - это продолжение ПОП, т.е. решение достаточно сложной задачи с помощью процедурного языка программирования в результате приведет к ООП-решению, несмотря на отсутствие в языке соответствующего синтаксиса
PM   Вверх
SneG0K
Дата 20.7.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



ООП - это гламурно smile

PM WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 0.0998 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.