Зачем нужны классы в php?

alexspb
На сайте с 14.11.2005
Offline
187
#21
Devider:
просто классы следует воспринимать как дополнительный, удобный, мощный инструмент программирования.
nikitian:
Удобно при дальнейшем развитии и наращении функциональности без опасения сломать уже работающее.

вот именно - удобство

когда встанут задачи, которые требуют использования ООП - тогда все и прояснится

А по поводу нагрузки на сервер:

выбирайте - мозги грузить или процессор

[Удален]
#22

гугли по запросу ООП

D
На сайте с 29.01.2009
Offline
42
#23
Здыхлик:
А для общих настроек существует паттерн Registry, :D

Каких общих настроек, не об общих настройках была речь, а об общих принципах работы. Что нет зачастую необходимости создавать отдельный класс и, тем более, описывать в нем все настройки.

Здыхлик:
дабы не хранить конфиги в глобальных массивах

Для этого существует паттерн Registry?

Здыхлик:

ЗЫ. Но ведь можно сделать похитрее - в реестре хранятся общие (дефолтные) настройки, а в каждом классе можно прописать свои, более приоритетные ;)

Зачем делать хитрее там, где можно сделать проще. Считать все настройки в глобальную переменную (двухмерный массив $SETTINGS[тип настроек][переменная]) одним запросом из базы. Можно закешировать полученные данные в файл. И чем плохи глобальные переменные не пойму.

сегодня стал еще беднее
[Удален]
#24

Devider, сейчас вас проклянут .... тему так то развивают злостные ООПшники :))))))

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

A
На сайте с 16.11.2008
Offline
12
#25

Свои пять копеек.

Самое главное, имхо, что забыли - это и есть "зачем" создавали. Понятно, что удобнее и проще, но это ведь не самоцель, да? =)

ООП позволяет представить любой объект системы как тип данных. Собственно, и представляет... А так же описать действия над ним. Давайте на примере:

- есть тип данных Int. У него есть характеристики: максимальная длина, положительное/отрицательное. И есть операции над Int: сложить, вычитать, умножать, делить (тут сложнее, но условно оставим).

То же самое - в реальном приложении. Есть у нас объект "Пользователь". С полной уверенностью можно сказать, что это - тип данных, поскольку у него есть и характеристики (атрибуты/поля) и методы (регистрировать, удалять, банить и т.д.).

Типов пользователей может быть много: девочки, мальчики, старухи, извращенцы и т.д. Но, несомненно, для внешней системы они одинаковы: их по-прежнему можно банить и удалять, регистрировать и восстанавливать им доступ. Строго говоря - это и есть соответствие интерфейса (имплементация) базовому типу. Попробуй-те как запомните, что для извращенца надо использовать функцию ban_mule, а не ban_user, что нужно использовать ban_girl, а не ban_boy... Попробовали?

Что же дает ооп? Наследование, как таковое, гарантирует минимальный ГАРАНТИРОВАННЫЙ набор методов у объекта, имплементация - соответствие одного типа другому, инкапсуляция - изолирование данных от остальных объектов (пример про извращенца актуален. Для того, чтобы его забанить - мне не нужно помнить, что у него бан проходит с сообщением "Ах ты ****** сын", вместо "Вы были забанены"), что банить его нужно на весь период и т.д.

Вообще, тема холливарная изначально: странно еще, как это народ не набежал =)

ЗЫ: про быстродействие. Плюшки все. Обращение ко внешним источникам данных проходит в сотни раз дольше, чем работа логики. Ну с некоторыми допусками, конечно ;)

bearman, можно с Вами не согласиться? Если используется синглтон, или (что лучше) - черный ящик, то очень хорошо конфиги ложатся в концепцию ООП. Все те же методы (получить, сохранить, закешировать), все те же данные... И в наследование замечательно ложатся и в композицию: вам ли не пофиг должно быть - откуда вы берете настройки: из файловой системы, бд или memcache? Вполне себе оправданно ;)

Пишу на похапэ (/ru/forum/342374). Аудит скриптов. За деньги. Качественно.
[Удален]
#26

asserte, имхо, синглтон - это не тру ооп

[Удален]
#27
Devider:
И чем плохи глобальные переменные не пойму.

Работают над проектом несколько человек (да и в случае одиночной разработки забыть можно что угодно) и они понятия не имеют кто какие глобальные переменные заюзал и могут их использовать многократно. Представляете какая путаница начнётся?

A
На сайте с 16.11.2008
Offline
12
#28
MOP1:
asserte, имхо, синглтон - это не тру ооп

Что значит "тру"? ООП - он или есть, или его нет. Если нужно гарантировать один экземпляр класса - чем не путь? Земеттье, я употребляю исконно "ООП-термины". А как насчет геттеров/сеттеров? Они не нарушают Ъ концепции? Ведь данные в итоге оказываются "вне объекта". Тоже не Ъ? Другое дело - использование мощи ООП или пародия "для удобства".

Если уж на то пошло - ткну в противоречие между наследованием и инкапсуляцией. Слышали о таком? =)

UPD: что-то на ум упало... А ведь 99% разрабов начинают использовать классы и объекты как "контейнеры" для функций. Чтобы с именованием не путаться... Надо опрос устроить - сколько человек так начало свой путь к ООП ;)

D
На сайте с 29.01.2009
Offline
42
#29
Обращение ко внешним источникам данных проходит в сотни раз дольше, чем работа логики.

Совсем же не обращаться не получится. А сколько считывать, пару килобайтами больше, меньше - большой роли не играет.

BoyStav
На сайте с 10.11.2006
Offline
182
#30
netwind:
U3RlcA==, горькая правда для кодера заключается в том, что ему лично на начальном этапе развития они нафиг не нужны. Но они могут понадобится его работодателю, чтобы эффективно использовать (инкапсулировать и наследовать ) его труд. Все ООП лишь попытка рассадить кодеров по клеткам.
Так что читайте концепции и примеряйте ошейник.

ржунимагу...

да весь ООП придумали коварные узурпаторы :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий