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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объектно-ориентированный PHP, какие преимущества? 
:(
    Опции темы
source777
Дата 23.8.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(skyboy @  23.8.2008,  17:05 Найти цитируемый пост)
ога. в РНР активно используется протитопное программирование... а я вот сижу и усиленно путаю классы и ООП  smile  
Причём тут PHP? ООП от языка не зависит, и уж тем более не достаточно написать слово class, чтобы твоя программа стала объектно-ориентированной...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
bobik02
Дата 23.8.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(solenko @  23.8.2008,  15:57 Найти цитируемый пост)
Стандартный пукть новичка.
1. Начал писать 
2. прочитал что ООП это круто 
3. начал пытатся писать в ООП стиле 
4. набрался опыта и понял что в п.1. он писоал [censored34! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме]
5. решил что все это благодаря ООП

Это Вы проходили на собственной "шкуре" ?
Или же это  со стороны  ?


--------------------
Have a nice day
PM   Вверх
lukas
Дата 23.8.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



skyboy, прототипное было скорее всего в 4ой версии, если вы конешно понимаете что такое "прототипное"...

И причем тут вариант реализации ООП ??? Их не так уж много и они довольно похожи...

Цитата(solenko @  23.8.2008,  15:57 Найти цитируемый пост)
Стандартный пукть новичка.1. Начал писать 2. прочитал что ООП это круто 3. начал пытатся писать в ООП стиле 4. набрался опыта и понял что в п.1. он писоал гавно5. решил что все это благодаря ООПКачественный код можно писть в любом случае (ровно как и не качественный).В моем текущем проекте модульность обеспечивается исключительно за счет статических методов классов. По вашему это то, что подразумевается под громким термином ООП? Никуя -- это просто неймспейсы, которые отсутствуют в PHP (пока). При этом я абсолютно уверен, что это наиболее оптимальное решение. Учитесь ДУМАТЬ, а не слепо верить какой-то парадигме.


Вы опять меня не понимаете, ...  smile ... как смешно читать как люди применяют ООП, если учесть что статистический вызов для любых методов будет исключен в PHP6, Я же использую ООП для того чтобы не писать одно и тоже по несколько раз, применяю НАСЛЕДОВАНИЕ и в результате наращиваю весь функционал...

P.S. И причем тут вера в парадигму, когда с помощью ООП мое затрчиваемое время сильно уменьшается, а главное появляется упорядоченность в коде.


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Bastet
Дата 23.8.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как своевременно апнули тему, к моему возвращению на форум. За три (*ужас*) года я много чего надумала и теперь практикую в РНР чистый ОО-подход. Почему:
  •  РНР5, ура-ура, теперь достаточно хорошо реализует ООП
  •  Объектная модель проектируется в UML, там же снабжается комментариями и никакой документации больше фактически не нужно. Все очень наглядно и легко вспоминается много времени спустя
  •  Если не полная универсальность, то очень хорошая возможность повторного использования кода при минимуме работы
  •  Задалась амбициозной целью реализовать движок сайта, который можно будет собирать из модулей как конструктор Лего. Только в ООП это возможно
  •  Просто "хороший стиль" и дополнительная практика в ОО проектировании - но это дело вкуса

Однако, по прежнему считаю, что для разработки не мега-сложный проектов вполне можно обойтись старым добрым функциональным программированием. и будет все красиво, и будет все работать.
--------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA
PM MAIL WWW ICQ   Вверх
source777
Дата 23.8.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Bastet, поздравляю с  самостоятельным осознанием преимуществ ООП smile 

Цитата(Bastet @  23.8.2008,  20:50 Найти цитируемый пост)
Однако, по прежнему считаю, что для разработки не мега-сложный проектов вполне можно обойтись старым добрым функциональным программированием. и будет все красиво, и будет все работать. 
Ты уверена, что для не сложных проектов нужно именно функциональное программирование?   smile 

Это сообщение отредактировал(а) source777 - 23.8.2008, 21:20


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Bastet
Дата 23.8.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не "нужно", досточно.
Эм... а ссылка - это к чему? Я что-то напутала в определении?  Назовем его тогда функциональным подходом, что ли...
--------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA
PM MAIL WWW ICQ   Вверх
skyboy
Дата 23.8.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(lukas @  23.8.2008,  19:41 Найти цитируемый пост)
если вы конешно понимаете что такое "прототипное"

конечно, нет. не понимаю. вот source777 меня просветил, что я, оказывается, зря говою о PHP в разделе "PHP: Общие вопросы" в теме "Объектно-ориентированный РНР". от Вас я с удовольствием выслушаю оцеку собственных познаний прототипного подхода. 
кстати говоря, учиывая, что прототипный подход подразумевает требования:
1. возможность полного клонирования объекта.
2. возможность модификации не только данных объекта, но и методов.
нет, конечно, я и не думал читать лекцию. просто напомнил. 
необходимые механизмы реализованы в claskit, потому писать в протипно-ориентированном стиле можно под любой версией, под которой работает classkit. потому меня удивляет фраза про 4 версию, в которой "протипное программирование было скорее всего". неужто в 5-ке я не смогу динамически добавлять/удалять методы? или клониорвание объекта стало реализовываться в 5-й версии хуже(ввели магический метод __clone, позволяющий реализовать любую логику клонирования).

Добавлено через 2 минуты и 12 секунд
Bastet, все в порядке. source777 слишком рьяно относится к терминологии. просот функциональным программированием обычно называют немного другое. структура программы, когда обработка производится при помощи функций/процедур называется "процедурным программированием". но это придирки, я думаю smile
PM MAIL   Вверх
lukas
Дата 23.8.2008, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Bastet @  23.8.2008,  20:50 Найти цитируемый пост)
РНР5, ура-ура, теперь достаточно хорошо реализует ООП


всетаки много не хватает... например что-то вроде свойств со своими read и write методами, но это можно реализовать обходными путями, а вот про виртуальные методы я что-то ничего не нашел, а это очень многое обламывает...

Это сообщение отредактировал(а) lukas - 23.8.2008, 21:39


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
skyboy
Дата 23.8.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(lukas @  23.8.2008,  19:41 Найти цитируемый пост)
если учесть что статистический вызов для любых методов будет исключен в PHP6

откуда такая информация? все, что я нашел: что не-статические методы нельзя будет вызывать, как статтические - только для созданного объекта можно будет. но отказываться от статических членов не вижу смысла и не обнаружил про такое никакой информации. поделись источником, будь добр.
PM MAIL   Вверх
lukas
Дата 23.8.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



skyboy, Вся суть прототипного ООП сводится к тому что классов нет, а есть только ОБъекты, которые можно клонировать... остальное уже расширение языка... 

Цитата(skyboy @  23.8.2008,  21:34 Найти цитируемый пост)
Bastet, все в порядке. source777 слишком рьяно относится к терминологии. просот функциональным программированием обычно называют немного другое. структура программы, когда обработка производится при помощи функций/процедур называется "процедурным программированием". но это придирки, я думаю 


Я еще когда писал про это, подумал а как лучше написать процедурное или функциональное,...  smile



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
source777
Дата 23.8.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(skyboy @  23.8.2008,  21:34 Найти цитируемый пост)
вот source777 меня просветил, что я, оказывается, зря говою о PHP в разделе "PHP: Общие вопросы" в теме "Объектно-ориентированный РНР". 
 Тема скорее всё-таки о применении ООП в PHP, а не об объектно-ориентированном РНР. Если тебе всё же хочется исходить из названия темы, то PHP не является объектно-ориентированным и никогда таким не станет, а если станет, то это уже будет не PHP (аналогично переходу от VisualBasic к VisualBasic.NET, название осталось, объектная ориентация появилась, а от языка только синтаксис остался, да и то частично), т.к. определяющую парадигму невозможно навесить на что-то уже существующее, даже такие языки как С++ и Delphi не сумели реализовать встроенную поддержку ООП в полной мере, куда уж тут PHP...

Если нужен объектно-ориентированный язык для веб-разработки, то советую обратить внимание на Ruby.

Добавлено через 7 минут и 29 секунд
Цитата(Bastet @  23.8.2008,  21:28 Найти цитируемый пост)
Эм... а ссылка - это к чему? Я что-то напутала в определении?  Назовем его тогда функциональным подходом, что ли... 

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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
skyboy
Дата 23.8.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(lukas @  23.8.2008,  20:43 Найти цитируемый пост)
Вся суть прототипного ООП сводится к тому что классов нет, а есть только ОБъекты, которые можно клонировать

без возможности динамического управления методами у тебя будет не прототипно-ориентированное программирование, а тупо один объект, данные которого ты сможешь переопределить, а вот поведение - нет. простое клонирование объектов - не более, чем клонирование. так что это не "расширение языка", а необходимое условие для реализации прототипов.
ты мне так, незнающему, и не сообщил, чем же 4-я версии "более склонна" к прототипно-ориентированному программированию.
также, почему то, ничего не говоришь про "отказ от статических методов" в 6-й версии. заинтриговал и молчишь.
Цитата(lukas @  23.8.2008,  20:39 Найти цитируемый пост)
например что-то вроде свойств со своими read и write методами

такое есть уже с пятой версии. только, возможно, не в таком виде, как можно было привыкнуть в десктопном программировании: для объекта существует только один getter: магический метод с именем __get, и только один setter - магический метод с именем __set, в качестве параметров которым передается и имя свойства, к которому прогаммист желает получить доступ. а благодаря магическому методу __call можно сделать getter даже для методов объекта.

Добавлено @ 23:03
Цитата(source777 @  23.8.2008,  21:49 Найти цитируемый пост)
то советую обратить внимание на Ruby

так мы тут про PHP говорить, знач, не будем? так бы и сказал. ушел читать про Ruby.
Цитата(source777 @  23.8.2008,  21:49 Найти цитируемый пост)
т.к. определяющую парадигму невозможно навесить на что-то уже существующее

есть такое понятие: "мультипарадигменнось"
Цитата(lukas @  23.8.2008,  20:39 Найти цитируемый пост)
а вот про виртуальные методы

не знаю, зачем языку с динамической типизацией переменных виртуальные методы. по сути - тут все методы "виртуальные" в том отношении, что как ты объект создал, метод соответствующего класса будет использоваться. а не метод предка, который надо вызывать явно. 
виртуальные методы используются ведь для полиморфизма, когда в переменная типа класса-предка ссылается на объект класса-потомка и надо работать с методами класса-потомка. в PHP так и будет в любом случае.
[Updated]
Цитата(source777 @  23.8.2008,  21:49 Найти цитируемый пост)
Если тебе всё же хочется исходить из названия темы

мне чаю хочется. а вот твое "при чем тут PHP к ООП?", когда тема с таким названием находится в разделе "РНР" меня удивило своей неожиданностью

Это сообщение отредактировал(а) skyboy - 23.8.2008, 23:04
PM MAIL   Вверх
Bastet
Дата 23.8.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



lukas, read и white - это да, сама немного сокрушалась по этому поводу.

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

Мне еще очень хотелось бы модификатор доступа friendly и возможность формировать пакета... *для красоты*
--------------------
"I'm not bad. I'm just drawn that way" © Jessica RabbitСм.также: BB | ЖЖ | DA
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 24.8.2008, 11:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Похоже моего поста тут никто не увидел, а жаль. Процитирую:
Цитата

Что касается ООП, я уже тут не в одной теме озвучивал свою позицию. ООП как проектирование - к языку вообще мало имеет отношение, оно лишь учитывает некоторые возможности языка, не более того. ООП как программирование с точки зрения ПХП - абсурд, т.к. ПХП как был структурированным языком, так им и остался, ООП в пхп носит лишь информационную модель, в которой нет событийности, за исключением __call, __get, __construct, __destruct и trigger_errors, ну может еще небольшой части. В ПХП ООП - просто синтаксически дает синтаксис ООП, а следовательно более простую реализацию приложения, спроектированного по принцыпам ООПроектирования, чем при полностью структурном описании. Хотя, конечно, зависит от задачи.

Самый просто пример. Покажите, где у вас объекты в ПХП. Модули? А вы уверены что они у вас именно живут как объекты, а не просто как синтаксически стилизованный набор функций? В ПХП объекты, как объекты - не живут.. 


Ваша ошибка в том, что вы смотрите на ООП, как на реализацию, мол вот в Сях есть дружественные функции, а в ПХП нет и т.п. Нельзя так. ООПрограммирование - это концепция, а не реализация!!!

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

Виртуальные методы, дружественные функции, это лишь надстройка над реализацией объектной модели, даже той, которая есть в С++, например. Не они определяют тот факт, что вы используйте ООПрограммирование, а наличие объектов, которые живут, как объекты, которые на что-то реагируют, что-то сами иногда делают. в ПХП этого - нет. Есть объектный синтаксис, который позволяет структурировать код, ну и в некоторых отдельных случаях организовать "примитивную псевдо событийность"...

Еще раз повторюсь: Покажите, где у вас объекты в ПХП. Модули? А вы уверены что они у вас именно живут как объекты, а не просто как синтаксически стилизованный набор функций? В ПХП объекты, как объекты - не живут.. 
PM ICQ   Вверх
lukas
Дата 24.8.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Mal Hack

мы обсуждаем не как реализованно Объектная модель в ПХП (это вообще дело разработчиков PHP), а какие преимущество его использования... Если уж пойти дальше то можно прийти к тому что все равно это все mov,add, всякие прерывания ASM-лера... 


Bastet, абстрактные методы меня не устраивают...

например у меня функция A используется в Функции B объекта Obj1, я создаю унаследованный класс Obj2 от Obj1, в нем переопределяю функцию A (т.е. уже функционал другой) и мне нужно чтобы в B вызывалась уже именно переопределенная функция, а не родителя... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




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


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

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