![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
||||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: нет Всего: 31 |
Вообще если так посмотреть на вопрос по-другому (к примеру посмотрим на никсовые Х-ы), то там тоже клиент сервер ... а в итоге все распаралеливание тоже скатывается к тактам процессора. Организовать подобие полноценного ООП на пхп можно, но сложно. То что есть сейчас - это только синтаксис языка и не более.
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
Тоже самое нужно сказать и про С++ и про Delphi, если уж быть последовательным, т.к. там тоже нет встроенной в язык реализации ООП. Да и чего уж там, даже C# & Java тоже не дают полной встроенной поддержки ООП. Но стоит ли настолько ударяться в пуризм? А то останется выбирать между SmallTalk`ом и Eiffel`ем... P.S. Осталось лишь решить каждому для себя как программировать: "на языке" или "с использованием языка"... Это сообщение отредактировал(а) source777 - 27.8.2008, 11:14 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 11 Всего: 146 |
Да, выглядит кривовато. Впрочем в PHP много что кривовато выглядит. Но в будущем эта ситуация должна улучшится. Я уже выкладывал ссылку на лямбда функции из PHP 5.3, выложу еще раз http://wiki.php.net/rfc/closures Это крайне интересные возможности, я их уже протестировал в альфе PHP 5.3. Давайте определимся термином "callback функция". В общем случае callback функция - это делегат(ссылка на функцию, строка/массив с именем функции) с конкретным определенным заранее набором параметров и возвращаемым типом. Т.е. к примеру любая callback функция для preg_replace_callback() имеет единственный параметр - массив и возвращает строку. Имея ссылку на такую функцию можно с уверенностью вызывать ее с заранее известным набором параметров. Правильно? Теперь события, события вызывают т.н. обработчики событий - собственно то, ради чего они и нужны. Обработчик событий, в общем случае, - это тоже функция с двумя параметрами: объектом в котором произошло событие и набором аргументов с которыми оно вызвано. Т.е. получается, что все event handler-ы это частный случай callback функций, а значит можно спокойно утверждать, что механизм событий использует вызовы callback функций. ArrayAccess появился в PHP 5.0. Остальное, вроде бы, и в PHP 4 возможно. Магический метод __invoke() будет в PHP 5.3 Самого класса Event, конечно же, в PHP нету ![]() Раньше было сложно, сейчас намного проще. Думаю, что вскоре уже можно будет сказать, что в PHP реализовать ОО модель так же просто, как и в C# или Java (если, конечно, исключить задачи требующие многопоточности).
Да. В .NET почти весь фреймворк написан на самой .NET, т.ч. в этом плане можно сказать, что в PHP даже больше внутренней реализации ![]() |
||||
|
|||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Народ, ей богу вы развели просто Болтологию и не более того!
Какие нафиг события? Где вы видели что в парадигме ООП - ключевой частью являеться наличие событий? События в программирвоании это вообще всего-лишь абстракция! Все это Callback вызовы красиво завернутые Фантиком. Этим Фантиком может быть что угодо библиотека С++, язык C# и т д. Если говорить о ООП языках.... да в идеале их вообще не существует! Все языки программирования где есть ООП, в них ООП это абстракция! На выходе мы получаем все тотже машинный код. Да и вообще программирование само по себе это абстракция. Вся истина в бинарном коде! Идите пишите на нем веб движки пробивая перфокарты дыроколом, и потом грузитесь с них. И это вам будет истинная реалистичность кодинга =) и материальность =) И жизнь если вам так угодно... коли вам обьекты неживые ![]() Смысл ООП именно в "новом" уровне Абстракции программирования! Это не технология! Это инструмент позволящий делать код приложения визуально более структурным и логичным. Есть ли смысл применять ООП в ПхП? - мое личное мнение... если проект бошльшой и если ты рабоатешь над проектом не один, в команде или если с твоим кодом прийдеться работать кому то другому - то ДА. |
|||
|
||||
02077461 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Вы отчасти правы, это далеко не технология, а всего лишь шаблон программирования. Перечисленные критерии не отображают действительности. ООП нужно использовать тогда, когда можно получить отдачу от применения этого паттерна. Пусть проект будет маленький, над ним будет работать один человек, но он поймет, что ООП использовать стоит. Использование ООП в PHP обусловленно распространенностью PHP как платформы, и удобностью принципов ООП для увеличения скорости разработки. Ну а разговор про делегатов в данной теме -- вообще не вызывает ничего кроме улыбки. |
|||
|
||||
KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Ребята, извините, что встреваю в тему.
Мне мой вопрос показался уместным именно в этом обсуждении. Суть такая: я пользуюсь в своих проектах тремя классами: работы с mysql, авторизации юзеров и аплоада картинок. Все эти классы я использую написанные кем-то, работать с ними умею. Проблема: хочу научиться писать классы самостоятельно. Нашел несколько книг, но одна из них очень сложная, ничего не понятно. Другая книга в принципе о PHP, где пара страниц о классах. Что порекомендуете почитать, чтобы научиться писать свои классы самостоятельно? Спасибо |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 2 Всего: 315 |
ну, имхо, тут никакой спецлитературы не надо. само понятие класса объясняется в одном абзаце на примере класса автомобилей, конкретного жигулёнка в качестве экземпляра, цветом, номерным знаком и максимальной мощностью двигателей в качестве свойств и движении вперёд, назад, открытии капота, включении музыки в качестве методов.
работа с классами расписывается на двух страницах, плюс ещё на двух всякие методы наследования и переопределения. и всё для собственного написания больше и не надо. то что там пишут далее, это уже имхо, попытка перестроения мышления читателя на ООП стиль |
|||
|
||||
krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
тут ты прав, только не забывай что необходимо еще понимание как правильно с классами работать! |
|||
|
||||
FoV |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
KonstRuctor,
Почитайте про паттерны, попробуйте разобрать какой-нибудь пхп-фреймворк |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Где не нужно использовать ООП, там его не нужно использовать
![]() |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: нет Всего: 137 |
Скажите, я упорно не понимаю: зачем нужна инкапсуляция, кроме как для скрытия в абстрактном классе свойств, не требующих наследования.
Ведь, как в той же Java, никакой безопасности инкапсуляция не несет. Поправьте если не прав. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 1 Всего: 73 |
Хотел сказать своими словами, но лучше чем в википедии не скажешь:
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%...BD%D0%B8%D0%B5) -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: нет Всего: 137 |
IZ@TOP, Ну фактически это и есть мои слова, только более развернуты.
А если я пишу "статический" класс, не подразумевающий наследование - тогда получается инкапсуляция излишняя? |
|||
|
||||
SureGOOD |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 25.3.2009 Репутация: нет Всего: -1 |
нет, прежде всего это хороший тон программирования)привыкайте объявлять методы и свойства класса, как private, если ситуация не требует обратного, так и у читающего ваш код будет меньше вопросов
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |