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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необходим ли ООП в php? 
:(
    Опции темы
IZ@TOP
Дата 7.8.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(youri @  6.8.2009,  23:34 Найти цитируемый пост)
дело не в "положили в ротик", меня интересует скорее, что именно дает ООП (в контексте php). А так, я найду. Просто можно было бы обсудить. Сомневаюсь я, что все осознают, зачем оно нужно

В общем-то я согласен, что многие осознают необходимость ООП на интуитивном уровне/так удобнее/так пишут профи и т.п.
Потому я и писал, что для грамотного разъяснения подобных вещей необходим соответствующий навык.

Цитата(youri @  6.8.2009,  23:34 Найти цитируемый пост)
могу предложить такой вариант (если состояния у объектов нету): для каждой лаборатории создаем набор функций с соответствующим префиксом и одну функцию, которая возвращает префикс, основываясь на каком-то условии; этот префикс используется для вызова нужных функций. Что-то типа


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

В данной задаче очень важна прозрачность, что позволит избавить нас от излишней необходимости дублирования кода (как в твоем примере). Достигается это за счет использования фабрики. Так же, наследование позволяет нам реализовать функционал "по умолчанию", который может быть переопределен или использован как есть.

В простейшей реализации мы будем иметь один абстрактный класс предка, который является фабрикантом и имеет возможность выбора лаборатории, добавления объекта фотографии и абстрактный метод отправки заказа, который должен реализовать потомок.

Код

abstract class PhotoLaboratory
{
    public function getLaboratories() { ... }
    public function setLaboratory($laboratory_id) { ... }
    public function addPhoto($photo_id) { ... }
    public static function factory($laboratory_name) { return new $laboratoryName; }
    abstract public function send();
}



Потомок же нашей абстракции, должен будет реализовать всего лишь один метод send, который отправит данные в лабораторию.

Код

class NetprintLaboratory extends PhotoLaboratory
{
    public function send() { ... }
}


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

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

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


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

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


Опытный
**


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

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



Цитата(IZ@TOP @  7.8.2009,  14:20 Найти цитируемый пост)
В простейшей реализации

Код

$lab = lab_create( ... ); // создаем нужный product
lab_call( $lab, 'func', ... ); // lab_call проверяет наличие $prefix.'_func' (переопределенная функция)
    // если не существует, то вызывает 'lab_func' (действие по умолчанию)


Цитата(IZ@TOP @  7.8.2009,  14:20 Найти цитируемый пост)
В заключение хочется добавить, что мы всю свою жизнь сталкиваемся с объектами. Будь то машина, человек или здание - это все объекты, которые имеют свойства, методы и тому подобное. Потому и ООП подход в программировании видится мне более логичным и естественным

Степанов об ООП
кроме того, такое впечатление, как будто есть только ООП и все (object happiness - не с самого начала, execution in the kingdom of nouns)
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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