- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
просто классы следует воспринимать как дополнительный, удобный, мощный инструмент программирования.
Удобно при дальнейшем развитии и наращении функциональности без опасения сломать уже работающее.
вот именно - удобство
когда встанут задачи, которые требуют использования ООП - тогда все и прояснится
А по поводу нагрузки на сервер:
выбирайте - мозги грузить или процессор
гугли по запросу ООП
А для общих настроек существует паттерн Registry, :D
Каких общих настроек, не об общих настройках была речь, а об общих принципах работы. Что нет зачастую необходимости создавать отдельный класс и, тем более, описывать в нем все настройки.
дабы не хранить конфиги в глобальных массивах
Для этого существует паттерн Registry?
ЗЫ. Но ведь можно сделать похитрее - в реестре хранятся общие (дефолтные) настройки, а в каждом классе можно прописать свои, более приоритетные ;)
Зачем делать хитрее там, где можно сделать проще. Считать все настройки в глобальную переменную (двухмерный массив $SETTINGS[тип настроек][переменная]) одним запросом из базы. Можно закешировать полученные данные в файл. И чем плохи глобальные переменные не пойму.
Devider, сейчас вас проклянут .... тему так то развивают злостные ООПшники :))))))
имхо не стоит уж настройки то точно выносить в ООП. согглушусь что класс для работы сс бд, шаблонами, рсс и тп удобно, а настройки .... смутное удобство.
Свои пять копеек.
Самое главное, имхо, что забыли - это и есть "зачем" создавали. Понятно, что удобнее и проще, но это ведь не самоцель, да? =)
ООП позволяет представить любой объект системы как тип данных. Собственно, и представляет... А так же описать действия над ним. Давайте на примере:
- есть тип данных Int. У него есть характеристики: максимальная длина, положительное/отрицательное. И есть операции над Int: сложить, вычитать, умножать, делить (тут сложнее, но условно оставим).
То же самое - в реальном приложении. Есть у нас объект "Пользователь". С полной уверенностью можно сказать, что это - тип данных, поскольку у него есть и характеристики (атрибуты/поля) и методы (регистрировать, удалять, банить и т.д.).
Типов пользователей может быть много: девочки, мальчики, старухи, извращенцы и т.д. Но, несомненно, для внешней системы они одинаковы: их по-прежнему можно банить и удалять, регистрировать и восстанавливать им доступ. Строго говоря - это и есть соответствие интерфейса (имплементация) базовому типу. Попробуй-те как запомните, что для извращенца надо использовать функцию ban_mule, а не ban_user, что нужно использовать ban_girl, а не ban_boy... Попробовали?
Что же дает ооп? Наследование, как таковое, гарантирует минимальный ГАРАНТИРОВАННЫЙ набор методов у объекта, имплементация - соответствие одного типа другому, инкапсуляция - изолирование данных от остальных объектов (пример про извращенца актуален. Для того, чтобы его забанить - мне не нужно помнить, что у него бан проходит с сообщением "Ах ты ****** сын", вместо "Вы были забанены"), что банить его нужно на весь период и т.д.
Вообще, тема холливарная изначально: странно еще, как это народ не набежал =)
ЗЫ: про быстродействие. Плюшки все. Обращение ко внешним источникам данных проходит в сотни раз дольше, чем работа логики. Ну с некоторыми допусками, конечно ;)
bearman, можно с Вами не согласиться? Если используется синглтон, или (что лучше) - черный ящик, то очень хорошо конфиги ложатся в концепцию ООП. Все те же методы (получить, сохранить, закешировать), все те же данные... И в наследование замечательно ложатся и в композицию: вам ли не пофиг должно быть - откуда вы берете настройки: из файловой системы, бд или memcache? Вполне себе оправданно ;)
asserte, имхо, синглтон - это не тру ооп
И чем плохи глобальные переменные не пойму.
Работают над проектом несколько человек (да и в случае одиночной разработки забыть можно что угодно) и они понятия не имеют кто какие глобальные переменные заюзал и могут их использовать многократно. Представляете какая путаница начнётся?
asserte, имхо, синглтон - это не тру ооп
Что значит "тру"? ООП - он или есть, или его нет. Если нужно гарантировать один экземпляр класса - чем не путь? Земеттье, я употребляю исконно "ООП-термины". А как насчет геттеров/сеттеров? Они не нарушают Ъ концепции? Ведь данные в итоге оказываются "вне объекта". Тоже не Ъ? Другое дело - использование мощи ООП или пародия "для удобства".
Если уж на то пошло - ткну в противоречие между наследованием и инкапсуляцией. Слышали о таком? =)
UPD: что-то на ум упало... А ведь 99% разрабов начинают использовать классы и объекты как "контейнеры" для функций. Чтобы с именованием не путаться... Надо опрос устроить - сколько человек так начало свой путь к ООП ;)
Совсем же не обращаться не получится. А сколько считывать, пару килобайтами больше, меньше - большой роли не играет.
U3RlcA==, горькая правда для кодера заключается в том, что ему лично на начальном этапе развития они нафиг не нужны. Но они могут понадобится его работодателю, чтобы эффективно использовать (инкапсулировать и наследовать ) его труд. Все ООП лишь попытка рассадить кодеров по клеткам.
Так что читайте концепции и примеряйте ошейник.
ржунимагу...
да весь ООП придумали коварные узурпаторы :)