|
|
|
|
|
для: Osipov
(24.06.2007 в 13:42)
| | Можно посмотреть исходники?
ravenzone@mail.ru | |
|
|
|
|
|
|
|
для: Равечка
(21.06.2007 в 17:42)
| | Я, например, очень часто использую ООП на PHP, причём такие паттерны, как абстрактная фабрика и комманда использую вообще постоянно.
Вот пример: мы можем создать класс "пользователь", тогда очень просто напечатать ссылку на него $user->print_link(); , и очень легко будет изменить её вид -- сразу во всех местах, кроме того, всю информацию о залогиненном пользователе можно хранить в одной переменной.
Я для всех данных, которые храняться в таблице mysql использую один класс, от которого порождаю по классу для каждой таблицы. Это позволяет удобно создавать, модифицировать таблицу, и с помощью одной строчки получить пользователя, например, $factory["user"]->get(1) --- при этом автоматически выбирается строка таблицы с индексом 1 и такие типы, как DATETIME и т. п. автоматически переводяться в естесственное PHP представление, и т. п.
Ещё я считаю, что разработка сильно упроститься, если сделать единый скрипт, например, do.php для обработки действий пользователя. В нем --- абстрактный класс action с абстрактной функцией do, от него подклассы для каждого действия, например class signup_action extends action для регистрации. Затем сделать массив $all_actions["signup"]=new signup_action; и обработчик для запросов типа do.php?action=signup. Тогда у action ещё можно сделать функцию, которая проверяет, достаточно ли у пользователя прав на совершение данного действия, причём, определить её в самом классе action так, чтобы она просто проверяла уровень данного пользователя (незарегистрированный пользователь, зарегистрированный пользователь, администратор,...) и сравнивала с уровнем, необходимым для данного действия. В более сложных ситуациях, эту функцию можно переопределить, например, если мы разрабатываем форум, то пользователь может редактировать только свои сообщения. И эта система действий позволила мне создать код защиты от ботов на каждой форме (сайт раньше флудили), сохранение черновиков во всех формах и т. п. --- всё универсально и очень удобно.
Также полезно аналогичным образом создать скрипт show.php который предназначен для просмотра. Каждый вид (то есть отдельная страница сайта) --- это тоже наследник от базового класса для всех видов. Вызов происходит, например, так: show.php?view=forum&id=15 (кстати, форум тогда это тоже класс, объект которого можно получить как $factory["forum"]->get(15), и тогда, если, например, у форума есть родительский форум, то он автоматически инициализируется в соответствующую переменную этого объекта). Тогда очень просто, например, добавить на всех страницах сайта меню, или банер --- достаточно изменить только один класс. Тогда ещё можно комбинировать виды, например сделать класс window_view, который показывает какую-то страницу сайта в импровизированном окне и тогда, например, можно написать: $view["widowed_forum"]=new window_view(new forum_view);
ООП всегда только упрощает разработку, особенно, если не скупиться на него. | |
|
|
|
|
|
|
|
для: TXC
(23.06.2007 в 15:10)
| | Существуют паттерны, которые не зависят от языка и работают в любой объектно-ориентированной среде (фабрика, одиночка, фасад и т.п.), а ряд паттернов могут быть завязаны на конкретные особенности языка, например, если используются для построения паттерна указатели C++ нигде больше такой паттерн воспроизвести не удастся. | |
|
|
|
|
|
|
|
для: lgar
(23.06.2007 в 20:29)
| | 1) Очень сильное влияние Java, у нас больше Perl и C влияет на Web.
2) При создании иерархий, например, иерархии объектов элементов управления HTML-форм, которые бы автоматически проверялись на корректное заполнение классом формы. Причём можно не ограничиваться классическими элементами управления, а вводить свои собственные.
3) Использовать ООП можно (не бездумно конечно и к месту и не месту), здесь ограничением скорее служит распространение PHP 5, который в последнее время достаточно широко распространился. При корректном использовании можно добиться впечатляющих результатов по повторному использованию кода.
PS Книга сейчас на корректуре, когда она закончится прогнозировать сложно, так как сейчас сезон отпусков. Краткое содержание её следующее
Введение
1 Введение в объектно-ориентированное программирование
2 Классы и объекты
3 Специальные методы классов
4 Инкапсуляция, наследование и полиморфизм
5 Интерфейсы
6 Статически и константные члены и методы класса
7 Клонирование и серилизация объектов
8 Исключения
9 Отражения
10 Framework
11 Создание системы управления сайтом
Приложение 1 Предопределённые объекты PHP
Приложение 2 Список функций для работы с классами и объектами
|
| |
|
|
|
|
|
|
|
для: Равечка
(21.06.2007 в 17:42)
| | Я не понимаю трех вещей:1)почему все зарубежные веб-приложения написаны с использованием ооп и они её боготворят,хотя это влият на призводительность,и код более понятным во всяком случае для меня не становится.2)Где вообще можно использовать ооп в веб.3)пришло ли время использовать ооп в пхп,если он ещё такой сырой?
PS Можно поподобнее о книжке.Хотя бы содержание.Скоро выйдет?Я надеюсь в мягком переплёте,не люблю книжки бхв в твердом переплете,они и дороже и больше шансов,что порвутся и т д | |
|
|
|
|
|
|
|
для: Илья Кравцов
(23.06.2007 в 18:54)
| | Большое спасибо, это как раз то, что нужно. | |
|
|
|
|
|
|
|
для: TXC
(22.06.2007 в 19:31)
| | Вот нашел сайт про паттерны в пхп www.patternsforphp.com | |
|
|
|
|
|
|
|
для: cheops
(22.06.2007 в 23:31)
| | Если можно, расскажите подробнее об инвариантных паттернах. Или дайте пожалуйста ссылку, где можно про это почитать.
Ну и еще такой вопрос. Ядро любой системы (в даном случае я пишу фреймворк) необходимо собирать из функций, накопленный в процессе написания приложения. А при выделении сущностей создавать классы. Верно я понимаю? | |
|
|
|
|
|
|
|
для: TXC
(22.06.2007 в 19:31)
| | Если расставлять точки на i, то имеется пару паттернов, которые работают и в PHP - они инвариантны для объектно-ориентированного программирования (не зависят от языка), но паттерны - это не самодостаточные сущности - это элемент мозаики, культуры - ООП в PHP не существует и трёх лет, да и сам язык очень молод (как физически, так и возрастом разработчиков) - не сложилось ещё нормальной культуры использования ООП - шишки сейчас набиваются, всякие phpBB, Britics и т.п. это лишь предтеча классических объектно-ориентированных приложений на PHP. | |
|
|
|
|
|
|
|
для: cheops
(22.06.2007 в 12:40)
| | Благодарю за то что расставили точки над 'і'. Я вот уже сколько бьюсь над вопросом паттернов, когда читаю литературу по кодированию, а оказывается, что в PHP это пока не реализовано. =) | |
|
|
| |
|