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

Поиск:

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


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


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

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



Цитата(lukas @  27.8.2008,  08:31 Найти цитируемый пост)
ну если нет в ПХП событийности, что отказываться от использования классов???

Нет, конечно, просто говорить, что мы используем объектный синтаксис, а не работаем с ОО моделью, в реализации
PM ICQ   Вверх
awers
Дата 27.8.2008, 11:02 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вообще если так посмотреть на вопрос по-другому (к примеру посмотрим на никсовые Х-ы), то там тоже клиент сервер ... а в итоге все распаралеливание тоже скатывается к тактам процессора. Организовать подобие полноценного ООП на пхп можно, но сложно. То что есть сейчас - это только синтаксис языка и не более.
PM MAIL WWW ICQ Skype   Вверх
source777
Дата 27.8.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Mal Hack @  27.8.2008,  08:53 Найти цитируемый пост)
просто говорить, что мы используем объектный синтаксис, а не работаем с ОО моделью, в реализации 

Тоже самое нужно сказать и про С++ и про Delphi, если уж быть последовательным, т.к. там тоже нет встроенной в язык реализации ООП. 
Да и чего уж там,  даже C# & Java тоже не дают полной встроенной поддержки ООП. Но стоит ли настолько ударяться в пуризм? А то останется выбирать между SmallTalk`ом и Eiffel`ем...

P.S. Осталось лишь решить каждому для себя как программировать: "на языке" или "с использованием языка"...

Это сообщение отредактировал(а) source777 - 27.8.2008, 11:14


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


9/10 программиста
***


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

Репутация: 11
Всего: 146



Цитата(Mal Hack @  27.8.2008,  00:25 Найти цитируемый пост)
Да, но, согласись, это криво, по сути это callback, не очень удобный.

Да, выглядит кривовато. Впрочем в PHP много что кривовато выглядит. Но в будущем эта ситуация должна улучшится. Я уже выкладывал ссылку на лямбда функции из PHP 5.3, выложу еще раз http://wiki.php.net/rfc/closures Это крайне интересные возможности, я их уже протестировал в альфе PHP 5.3.
Цитата(lukas @  27.8.2008,  08:31 Найти цитируемый пост)
оторые скорее всего реализованы через колбек функции...

Давайте определимся термином "callback функция". 
В общем случае callback функция - это делегат(ссылка на функцию, строка/массив с именем функции) с конкретным определенным заранее набором параметров и возвращаемым типом. Т.е. к примеру любая callback функция для preg_replace_callback() имеет единственный параметр - массив и возвращает строку. Имея ссылку на такую функцию можно с уверенностью вызывать ее с заранее известным набором параметров. Правильно?
Теперь события, события вызывают т.н. обработчики событий - собственно то, ради чего они и нужны. Обработчик событий, в общем случае, - это тоже функция с двумя параметрами: объектом в котором произошло событие и набором аргументов с которыми оно вызвано. Т.е. получается, что все event handler-ы это частный случай callback функций, а значит можно спокойно утверждать, что механизм событий использует вызовы callback функций.

Цитата(Mal Hack @  27.8.2008,  00:25 Найти цитируемый пост)
С какого момента это стало возможно?

ArrayAccess появился в PHP 5.0. Остальное, вроде бы, и в PHP 4 возможно. Магический метод __invoke() будет в PHP 5.3
Самого класса Event, конечно же, в PHP нету smile Это реализуется своими силами.

Цитата(awers @  27.8.2008,  12:02 Найти цитируемый пост)
Организовать подобие полноценного ООП на пхп можно, но сложно.

Раньше было сложно, сейчас намного проще. Думаю, что вскоре уже можно будет сказать, что в PHP реализовать ОО модель так же просто, как и в C# или Java (если, конечно, исключить задачи требующие многопоточности).

Цитата(source777 @  27.8.2008,  12:12 Найти цитируемый пост)
Да и чего уж там,  даже C# & Java тоже не дают полной встроенной поддержки ООП.

Да. В .NET почти весь фреймворк написан на самой .NET, т.ч. в этом плане можно сказать, что в PHP даже больше внутренней реализации smile 
PM MAIL   Вверх
Kipter
Дата 11.1.2009, 02:15 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Народ, ей богу вы развели просто Болтологию и не более того!

Какие нафиг события? Где вы видели что в парадигме ООП - ключевой частью являеться наличие событий?
События в программирвоании это вообще всего-лишь абстракция! Все это Callback вызовы красиво завернутые Фантиком.
Этим Фантиком может быть что угодо библиотека С++, язык C# и т д.

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

Да и вообще программирование само по себе это абстракция.
Вся истина в бинарном коде! Идите пишите на нем веб движки 
пробивая перфокарты дыроколом, и потом грузитесь с них.
И это вам будет истинная реалистичность кодинга =) и материальность =)
И жизнь если вам так угодно... коли вам обьекты неживые  smile 

Смысл ООП именно в "новом" уровне Абстракции программирования! Это не технология!
Это инструмент позволящий делать код приложения визуально более структурным и логичным.

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

PM MAIL   Вверх
02077461
Дата 11.1.2009, 12:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Kipter @  11.1.2009,  02:15 Найти цитируемый пост)
Смысл ООП именно в "новом" уровне Абстракции программирования! Это не технология!

Вы отчасти правы, это далеко не технология, а всего лишь шаблон программирования. 
Цитата(Kipter @  11.1.2009,  02:15 Найти цитируемый пост)

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

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


Использование ООП в PHP обусловленно распространенностью PHP как платформы, и удобностью принципов ООП для увеличения скорости разработки.
Ну а разговор про делегатов в данной теме -- вообще не вызывает ничего кроме улыбки.
PM   Вверх
KonstRuctor
Дата 17.1.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ребята, извините, что встреваю в тему.
Мне мой вопрос показался уместным именно в этом обсуждении.
Суть такая: я пользуюсь в своих проектах тремя классами: работы с mysql, авторизации юзеров и аплоада картинок.
Все эти классы я использую написанные кем-то, работать с ними умею.
Проблема: хочу научиться писать классы самостоятельно.
Нашел несколько книг, но одна из них очень сложная, ничего не понятно. 
Другая книга в принципе о PHP, где пара страниц о классах.
Что порекомендуете почитать, чтобы научиться писать свои классы самостоятельно?
Спасибо
PM MAIL WWW ICQ   Вверх
bars80080
Дата 17.1.2009, 19:46 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



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

для собственного написания больше и не надо.
то что там пишут далее, это уже имхо, попытка перестроения мышления читателя на ООП стиль
PM MAIL WWW   Вверх
krundetz
Дата 18.1.2009, 07:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(bars80080 @  17.1.2009,  19:46 Найти цитируемый пост)
само понятие класса объясняется в одном абзаце на примере класса автомобилей, конкретного жигулёнка в качестве экземпляра, цветом, номерным знаком и максимальной мощностью двигателей в качестве свойств и движении вперёд, назад, открытии капота, включении музыки в качестве методов.
работа с классами расписывается на двух страницах, плюс ещё на двух всякие методы наследования и переопределения. и всё

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


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
FoV
Дата 5.4.2009, 15:02 (ссылка)   | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



KonstRuctor
Цитата

Что порекомендуете почитать, чтобы научиться писать свои классы самостоятельно?

Почитайте про паттерны, попробуйте разобрать какой-нибудь пхп-фреймворк 
PM MAIL   Вверх
Elfet
Дата 5.4.2009, 19:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Где не нужно использовать ООП, там его не нужно использовать smile


--------------------
PM MAIL WWW Skype   Вверх
Aliance
Дата 20.4.2009, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Скажите, я упорно не понимаю: зачем нужна инкапсуляция, кроме как для скрытия в абстрактном классе свойств, не требующих наследования.
Ведь, как в той же Java, никакой безопасности инкапсуляция не несет. Поправьте если не прав.
PM MAIL WWW ICQ Skype   Вверх
IZ@TOP
Дата 21.4.2009, 18:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Цитата(Aliance @  20.4.2009,  16:07 Найти цитируемый пост)
Скажите, я упорно не понимаю: зачем нужна инкапсуляция, кроме как для скрытия в абстрактном классе свойств, не требующих наследования.
Ведь, как в той же Java, никакой безопасности инкапсуляция не несет. Поправьте если не прав. 

Хотел сказать своими словами, но лучше чем в википедии не скажешь:
Цитата
Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются:

    * предельная локализация изменений при необходимости таких изменений,
    * прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

Образ в пример: ложка опущенная в стакан, не меняет его свойств и не становится частью стакана, хотя и помогает пить из него чай; в то же время, сахар, растворенный в чае с помощью ложки, делает его сладким.

Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции!


http://ru.wikipedia.org/wiki/%D0%98%D0%BD%...BD%D0%B8%D0%B5)


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Aliance
Дата 22.4.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



IZ@TOP, Ну фактически это и есть мои слова, только более развернуты.
А если я пишу "статический" класс, не подразумевающий наследование - тогда получается инкапсуляция излишняя?
PM MAIL WWW ICQ Skype   Вверх
SureGOOD
Дата 22.4.2009, 11:24 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нет, прежде всего это хороший тон программирования)привыкайте объявлять методы и свойства класса, как private, если ситуация не требует обратного, так и у читающего ваш код будет меньше вопросов
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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