- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
VHS-1980, а раз уж об этом речь зашла, не подскажите, что значит "осознать методы ООП"?
я вот довольно много вроде читал по этому поводу, но так до конца и не понял.
вроде как это "смещение приоритетов от функциональности к структуре"
или даже так - это такое программирование, где есть объекты (и классы), это прог-ние, которое ориентируется на объекты )
читал про эти классы и объекты, и как понял класс - это набор функций.
то есть , вроде как объект- это функция, в которой несколько функций.
а что такое функция? это подпрограмма. типа, если нам нужно умножить несколько цифр на 2 и прибавить 5, и вместо того, чтобы копировать 10 раз мы пишем function dvapyat(x) {return x*2+5}
а этот объект - это несколько таких функций, несколько подпрограмм. какая-то на 3 умножает, какая-то на 4. а в целом получается таблица умножения. class tablumnozh
но при этом, чтобы вызвать какую-то функцию из этого набора, нужно все равно нужно будет обратить по ее имени, типа tablumnozh->dvapyat
так зачем тогда несколько функций объединять в набор, если можно их просто написать, и просто вызывать, без имени класса и стрелочки?
Ссылочку на видео дайте плиз.
Книжку открыл, почитал, всегда можно перелистнуть на пару страниц обратно при вопросе, тут же вперед вернуться. Заглянуть в оглавление на нужные функции и т.п. А с видео как простой наблюдатель, листать, перескакивать не возможно.
канал на ютубе
Уровень1. модуль 1
Уровень1. модуль 2
Уровень1. модуль 3
Также у них есть замечательные курсы: "MYSQL5", "Основы веб-безопасности", "серверные технологии".
а этот объект - это несколько таких функций, несколько подпрограмм. какая-то на 3 умножает, какая-то на 4. а в целом получается таблица умножения. class tablumnozh
но при этом, чтобы вызвать какую-то функцию из этого набора, нужно все равно нужно будет обратить по ее имени, типа tablumnozh->dvapyat
так зачем тогда несколько функций объединять в набор, если можно их просто написать, и просто вызывать, без имени класса и стрелочки?
Объект - это в первую очередь абстракция.
Объекты обладают состоянием (свойства) и поведением (методы).
Объекты создают дополнительные пространства имен.
Объекты позволяют писать более понятный, читаемый, интуитивный и поддерживаемый код.
Также, они позволяют писать меньше кода.
То, что большинство из тех, кто "лепит сайты на коленке за день", не умеет думать в терминах ООП, и, соответственно, проектировать приложения правильно, никак не говорит о том, что "объект - это набор функций, только с избыточным синтаксисом".
вот-вот и вы туда же.
На счет сайтов на коленке за день — это вы, конечно, на меня намекаете? — горделиво прищурившись, спросил Филипп Филиппович. (с)
я и не говорил, что уже отлично знаю пхп. или даже хорошо. потому и спрашиваю. потому и хочу лучше понять ооп, чтобы грамотно писать приложения.
а не то, что я пхп еще с Расмусом писал, а теперь утверждаю, что объекты не нужны.
я про то, зачем все так усложнять при описании того, что такое ООП? чтобы сложнее было понять?
почему не сказать, что объект - это набор функций (подпрограмм) и переменных? ну да, некоторые функции и переменные доступны только внутри класса, ну да, некоторые функции вызываются автоматически при создании объекта. но от этого он не перестает быть просто набором функций.
зачем вот эти "свойства" и "методы", или хуже того "состояние" и "поведение"? может, у них еще настроение есть, внешность и интонация?
есть какое-то четкое объяснение, зачем усложнять и без того сложную терминологию?
и почему "класс - это набор функций" - неверное утверждение, а "у класса плохое поведение" - верное?
функции - это ваши работники.
объекты - бригадиры.
Вы распределяете работников по бригадирам и уже даете указания бригадирам.
Вася->начинай();
Петя->начинай();
При этом в дальнейшем не надо знать, какие работники у Пети или у Васи. Указывается только то, что надо сделать.
Потом когда будете рыть новый котлован, то не надо заново собирать работников. Достаточно взять Васю и сказать ему "начинай".
Stek, спасибо, теперь немного яснее.
то есть когда нужно создать что-то сложнее, чем таблицу умножения, то это имеет смысл.
как я понял, когда на сайте, во всем php коде не 10 функций, а 100, или даже 1000 (страшно представить даже), то их имеет смысл объединить в "группы по интересам", штук по 10-20, чтобы потом оперировать не 1000-ю названиями функций, а всего 50-ю классами, а внутри них функции можно называть одинаково (не публичные).
благо, я пока еще не писал сайты, в которых было 1000 функций.. )
Stek, спасибо, теперь немного яснее.
то есть когда нужно создать что-то сложнее, чем таблицу умножения, то это имеет смысл.
как я понял, когда на сайте, во всем php коде не 10 функций, а 100, или даже 1000 (страшно представить даже), то их имеет смысл объединить в "группы по интересам", штук по 10-20, чтобы потом оперировать не 1000-ю названиями функций, а всего 50-ю классами, а внутри них функции можно называть одинаково (не публичные).
благо, я пока еще не писал сайты, в которых было 1000 функций.. )
Чиво? Каким ещё интересам? Почему не публичные?
ООП предлагает быдлокодеру рассматривать почти любую сущность как объект. Ну то есть совсем как объект. Перед вами не просто список действий "тыкнуть в глаз ручкой", "положить топор в шуфлядку стола", "написать письмо на деревню дедушке", "разуплотнить стол с приятным хрустом", а аж два объекта. "Стол" и "ручка". А у них уже есть суперспособности:
Cтол.Сломаться();
Стол.Спрятать("Топор");
Ручка.НаписатьПисьмецо("/home/деревня/дедушка.txt");
Ручка.ТыкнутьГлаз("/home/Саша/");
... и далее классы обогащаются подобным хламом по мере необходимости такой вот фигни для ваших объектов.
Радость в этом подходе вижу всего одну: выделение и освобождение памяти для всего, что напихали в классы, обычно проходит без вашего участия и отожрать случайно пару планок оперативы сумеет не каждый. Ну и мемлик организовать намного труднее.
И вообще, функции, конструктор и прочий хлам почти всегда идут как public. Protected\Private вешают обычно на поля в классе, а доступ к ним либо через функции с проверками на корректное условие, передаваемые параметры и другие радости, либо, для ленивых, через автосвойства, как в каком-нибудь C#.
Скажем так, я свое изучение PHP начинал во времена засилья системы php-nuke. В то время версией php была 4,2 кажется, поддержка ООП была зачаточная и люди не утруждали себя в написании классов. Делали инклуд файлов с набором функций, их могло быть сколь угодно много. И этого было вполне достаточно.
В принципе, кроме стандартизации написания кода, удобоваримости его для стороннего кодера для небольших личных проектов, я не вижу огромной надобности в классах. Все можно делать и по старинке. Но вот только нужно уметь работать со всеми возможностями языка, ведь в последствии, Вы можете слегка потеряться в коде, написанном на классах. Само восприятие кода в ООП несколько иное, чем в процедурном программировании. Поэтому лично мне приходится себя переламывать и писать на классах, чтобы не облениться и усвоить информацию.
Чиво? Каким ещё интересам? Почему не публичные?
а, то есть в двух разных классах функции всегда могут называться одинкаово, даже публичные?
ну вообще, в принципе логично, ведь вызвать ее отдельно нельзя, только через соот. объект. а значит и путаницы не будет.
а "интересам" я имел в виду - что один класс - для чата, другой - чтобы баннеры вешать на сайт, третий - для подключения к бд, ну и т.д., по интересам.
и вы одной из функций класса не передали параметры, надо:
Cтол->Сломаться("с приятным хрустом");
а почему вы через точку пишете, а не стрелочку? это в джаваскрипте так? я просто с ним особо не работал, только с php и htmlс css.
а в javascript тоже есть классы?
зачем он вообще нужен, этот джачаскрипт, чтобы картинку при наведении менять? так это через css можно сделать..