С чего начать изучение php?

nikonlay
На сайте с 11.12.2006
Offline
176
#41

VHS-1980, а раз уж об этом речь зашла, не подскажите, что значит "осознать методы ООП"?

я вот довольно много вроде читал по этому поводу, но так до конца и не понял.

вроде как это "смещение приоритетов от функциональности к структуре"

или даже так - это такое программирование, где есть объекты (и классы), это прог-ние, которое ориентируется на объекты )

читал про эти классы и объекты, и как понял класс - это набор функций.

то есть , вроде как объект- это функция, в которой несколько функций.

а что такое функция? это подпрограмма. типа, если нам нужно умножить несколько цифр на 2 и прибавить 5, и вместо того, чтобы копировать 10 раз мы пишем function dvapyat(x) {return x*2+5}

а этот объект - это несколько таких функций, несколько подпрограмм. какая-то на 3 умножает, какая-то на 4. а в целом получается таблица умножения. class tablumnozh

но при этом, чтобы вызвать какую-то функцию из этого набора, нужно все равно нужно будет обратить по ее имени, типа tablumnozh->dvapyat

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

Мощные фонари и бинокли: https://market.yandex.ru/store--volny-i-veter?businessId=79203856
S
На сайте с 23.05.2004
Offline
316
#42
Вы хотя бы ради интереса(если есть желание) посмотрите ПХП.Уровень1(первые 3 модуля) от КЦО "Специалист" и поймете

Ссылочку на видео дайте плиз.

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

Это просто подпись.
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#43

канал на ютубе

Уровень1. модуль 1

Уровень1. модуль 2

Уровень1. модуль 3

Также у них есть замечательные курсы: "MYSQL5", "Основы веб-безопасности", "серверные технологии".

Подпись))
H
На сайте с 09.10.2012
Offline
11
#44
nikonlay:

а этот объект - это несколько таких функций, несколько подпрограмм. какая-то на 3 умножает, какая-то на 4. а в целом получается таблица умножения. class tablumnozh

но при этом, чтобы вызвать какую-то функцию из этого набора, нужно все равно нужно будет обратить по ее имени, типа tablumnozh->dvapyat

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

Объект - это в первую очередь абстракция.

Объекты обладают состоянием (свойства) и поведением (методы).

Объекты создают дополнительные пространства имен.

Объекты позволяют писать более понятный, читаемый, интуитивный и поддерживаемый код.

Также, они позволяют писать меньше кода.

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

nikonlay
На сайте с 11.12.2006
Offline
176
#45

вот-вот и вы туда же.

На счет сайтов на коленке за день — это вы, конечно, на меня намекаете? — горделиво прищурившись, спросил Филипп Филиппович. (с)

я и не говорил, что уже отлично знаю пхп. или даже хорошо. потому и спрашиваю. потому и хочу лучше понять ооп, чтобы грамотно писать приложения.

а не то, что я пхп еще с Расмусом писал, а теперь утверждаю, что объекты не нужны.

я про то, зачем все так усложнять при описании того, что такое ООП? чтобы сложнее было понять?

почему не сказать, что объект - это набор функций (подпрограмм) и переменных? ну да, некоторые функции и переменные доступны только внутри класса, ну да, некоторые функции вызываются автоматически при создании объекта. но от этого он не перестает быть просто набором функций.

зачем вот эти "свойства" и "методы", или хуже того "состояние" и "поведение"? может, у них еще настроение есть, внешность и интонация?

есть какое-то четкое объяснение, зачем усложнять и без того сложную терминологию?

и почему "класс - это набор функций" - неверное утверждение, а "у класса плохое поведение" - верное?

S
На сайте с 23.05.2004
Offline
316
#46
так зачем тогда несколько функций объединять в набор, если можно их просто написать, и просто вызывать, без имени класса и стрелочки?

функции - это ваши работники.

объекты - бригадиры.

Вы распределяете работников по бригадирам и уже даете указания бригадирам.

Вася->начинай();

Петя->начинай();

При этом в дальнейшем не надо знать, какие работники у Пети или у Васи. Указывается только то, что надо сделать.

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

nikonlay
На сайте с 11.12.2006
Offline
176
#47

Stek, спасибо, теперь немного яснее.

то есть когда нужно создать что-то сложнее, чем таблицу умножения, то это имеет смысл.

как я понял, когда на сайте, во всем php коде не 10 функций, а 100, или даже 1000 (страшно представить даже), то их имеет смысл объединить в "группы по интересам", штук по 10-20, чтобы потом оперировать не 1000-ю названиями функций, а всего 50-ю классами, а внутри них функции можно называть одинаково (не публичные).

благо, я пока еще не писал сайты, в которых было 1000 функций.. )

Mad_Man
На сайте с 10.11.2008
Offline
162
#48
nikonlay:
Stek, спасибо, теперь немного яснее.

то есть когда нужно создать что-то сложнее, чем таблицу умножения, то это имеет смысл.

как я понял, когда на сайте, во всем php коде не 10 функций, а 100, или даже 1000 (страшно представить даже), то их имеет смысл объединить в "группы по интересам", штук по 10-20, чтобы потом оперировать не 1000-ю названиями функций, а всего 50-ю классами, а внутри них функции можно называть одинаково (не публичные).

благо, я пока еще не писал сайты, в которых было 1000 функций.. )

Чиво? Каким ещё интересам? Почему не публичные?

ООП предлагает быдлокодеру рассматривать почти любую сущность как объект. Ну то есть совсем как объект. Перед вами не просто список действий "тыкнуть в глаз ручкой", "положить топор в шуфлядку стола", "написать письмо на деревню дедушке", "разуплотнить стол с приятным хрустом", а аж два объекта. "Стол" и "ручка". А у них уже есть суперспособности:

Cтол.Сломаться();

Стол.Спрятать("Топор");

Ручка.НаписатьПисьмецо("/home/деревня/дедушка.txt");

Ручка.ТыкнутьГлаз("/home/Саша/");

... и далее классы обогащаются подобным хламом по мере необходимости такой вот фигни для ваших объектов.

Радость в этом подходе вижу всего одну: выделение и освобождение памяти для всего, что напихали в классы, обычно проходит без вашего участия и отожрать случайно пару планок оперативы сумеет не каждый. Ну и мемлик организовать намного труднее.

И вообще, функции, конструктор и прочий хлам почти всегда идут как public. Protected\Private вешают обычно на поля в классе, а доступ к ним либо через функции с проверками на корректное условие, передаваемые параметры и другие радости, либо, для ленивых, через автосвойства, как в каком-нибудь C#.

VHS-1980
На сайте с 21.05.2010
Offline
91
#49

Скажем так, я свое изучение PHP начинал во времена засилья системы php-nuke. В то время версией php была 4,2 кажется, поддержка ООП была зачаточная и люди не утруждали себя в написании классов. Делали инклуд файлов с набором функций, их могло быть сколь угодно много. И этого было вполне достаточно.

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

nikonlay
На сайте с 11.12.2006
Offline
176
#50
Mad_Man:
Чиво? Каким ещё интересам? Почему не публичные?

а, то есть в двух разных классах функции всегда могут называться одинкаово, даже публичные?

ну вообще, в принципе логично, ведь вызвать ее отдельно нельзя, только через соот. объект. а значит и путаницы не будет.

а "интересам" я имел в виду - что один класс - для чата, другой - чтобы баннеры вешать на сайт, третий - для подключения к бд, ну и т.д., по интересам.

и вы одной из функций класса не передали параметры, надо:

Cтол->Сломаться("с приятным хрустом");

а почему вы через точку пишете, а не стрелочку? это в джаваскрипте так? я просто с ним особо не работал, только с php и htmlс css.

а в javascript тоже есть классы?

зачем он вообще нужен, этот джачаскрипт, чтобы картинку при наведении менять? так это через css можно сделать..

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий