ООП для начинающих PHP. Конструкторы и деструкторы. Магические методы.
HTML-код
- Опубликовано: 8 сен 2024
- Курс ООП для начинающих в PHP. В этом уроке мы рассмотрели конструкторы и деструкторы.
========================================================
ПОДПИШИСЬ на канал "Web Developer Blog" - goo.gl/Ai4OGa
И не пропускай новые видео!!!
========================================================
ПЛЕЙ-ЛИСТЫ МОЕГО КАНАЛА:
JavaScript практика - goo.gl/rxsyeX
Основы JavaScript - goo.gl/Cw7Vqv
Уроки Bootstrap 4 - goo.gl/65gmmS
Уроки Framework для верстки Foundation 6 - goo.gl/Yi2jfc
Рубрика "Основы за 10 минут" - goo.gl/QIvpDD
Верстка сайта на Foundation 6 - goo.gl/gVS45o
Основы препроцессора SASS - goo.gl/f4BDww
Уроки по Sublime text 3 - goo.gl/SjiKM2
Видео про заработок на RUclips - goo.gl/VxdirI
Создаем интернет магазин на PrestaShop - goo.gl/jop7M4
Уроки jQuery - goo.gl/tjAs41
========================================================
ПОДПИШИСЬ на Группу Вконтакте "Web Developer Blog" - goo.gl/6mO5GL
Забавно смотреть, как раньше было по 50 просмотров на видео, а сейчас все 50к. Спасибо! Очень хорошо объясняешь)
сколько лет прошло как бы
Как то непонятно мне для чего нужен деструктор, как его надо применить в практике, почему надо уничтожать ? Происните мне пожалуста
Как я понял на данный момент,желательно уничтожать отработанные объекты,которые в дальнейшем коде будут не нужны,чтобы они не занимали лишнюю память и не нагружали своей инициализацией процессор.Знатоки,это так? :-)
@@sergeipirogov5396 Да это так!
Лайк!!! только сечас "толково понял" про эти методы :)
Спасибо!
Спасибо за материал!
Супер. Мне нравится. Продолжай
Спасибо!
Хорошее видео, только забыли сказать о значениях по-умолчанию для конструктора, а так все на высоте))) Спасибо.
Спасибо
Хороший урок.Спасибо))
__construct в данном примере был применен по принципу function в php в строго заданном порядке переменных, не увидел в нем смысла.
Я вот его например использую для высчитывания внутри него переменных для дальнейшего их использования в методах ниже. Не знаю насколько это не правильно, но это работает и приносит желаемый результат.
Спасибо вам вы где проподали вы нам нужны без вас как-то трудно )
Не было ни времени, ни желания снимать.
Web Developer Blog потерпите еще чу-чуть новый Рим не сразу строился же)
Не торопитес вы так новый Рим не сразу строился! )
С начала на этом канале научусь ООП а после на канале Дмитрия Лаврика закреплю практикой. Я так с HTML,CSS,JS так делал ,сперва легенький салатик(теория+немножко практики) а потом жирное мясо(много практики). Хотя курс по Js на WDB жирный.
Ну норм
Спасибо, хоть тут понял, что это за штука такая.
Спасибо брат
Класс
👍👍👍
Стоит упомянуть, что вышеупомянутые методы __construct и __destruct - это так называемые "магические методы", которые есть у каждого класса в PHP. Есть еще целый ряд других "магических методов", такие как: __get, __set, __isset, __unset, __call и другие. Имена этих методов зарезервированы в PHP, а потому не стоит называть методы своих классов этими именами.
Стоит так же упомянуть что целый ряд других магических методов будут рассмотрены каждый по отдельности далее в отдельных видео.
Web Developer Blog понял ;)
Я думал это называется встроенные функции php ? А вы их называете магическими методами? :-) Или это уже разные вещи?
@@sergeipirogov5396функция это функция, а это метод, т.е. всегда является объектом класса.
5-46 ПОнятно , что не понятно для чего конструктор то ?
Для удобства. Раньше ты добавлял значения классу так:
$admin = new User();
$admin->Name = "Renat";
$admin->Fname = "Grishin";
С конструктором ты задаешь значения так:
$admin = new User("Renat", "Grishin");
Плохо доходит до меня. Что посоветуете почитать, чтобы было понятно для чего все это нужно? Я с PHP работаю с 2007 года, но только процедурным методом и весьма поверхностно. Как применить то, о чем вы говорите, я не понимаю и в чем же такое преимущество ООП в сравнении с ПП.
Аналогично и я. Но как только приходится делать что-то очень крупное, процедурный метод, как бы четко все не было упорядочено по файлам, папкам, все равно возникает мешанина. Если делать что-то не большое, типа простеньких лендосов или небольших админок, в которых не надо что либо модернизировать в будущем, то процедурный подход будет и проще и быстрее. Если делать что-то расширяемое и большое - упираешься в сложность кода и в сложность доработки новых функций. ООП решает эту проблему и позволяет писать приложения, которые легче поддерживать и модернизировать. Ну, и к тому же все известные CMS, фреймворки написаны на ООП, поэтому даже их применение требует знаний в ООП. Как-то так.
В PHP7.1 все норм!
Отлично
Немного не понятно про свойства внутри конструктора. То есть можно использовать свойства без предопределения?
Здравствуйте. Подскажите, зачем нужны фигурные скобки в функции getInfo? Я попробовал без них - вывод получился ( return "$this->name"."$this->password". "$this->email"."$this->city"; - без фигурных скобок). В каких случаях они используются. Спасибо за уроки.
В php фигурные скобки вокруг переменных отделяют их от остального текста когда используются двойные кавычки, может быть ситуация когда есть переменная $name = "Джон", чтобы её вывести в тексте используем echo "{$name}у 12 лет". В браузере выведется: Джону 12 лет. Если бы мы не отделили переменную кавычками echo"$nameу 12 лет", то получили бы ошибку, т.к. переменной $nameу нет.
А вот так что не получится echo $name"у 12лет" ;
Без скобок не обойтись когда нужно вывести одну ячейку массива echo {$myrow["name"] } "у 12лет." ;
Без кавычек и точек тоже работает :-) Вот так:
public function test(){
echo "Меня зовут $this->name $this->surname,
Я из города $this->city,
Мой емаил адрес: $this->email ";
}
Очень мало сказано про практическую полезность этих конструкторов) Да ип честно говоря, я не понял можно ли впринципи обойтись без конструктора, или это очень важно и критично.
Если приложение требует использование конструктора, то используйте, нет так нет. Но на практике попробуйте порешать задачи на ооп и поймете как и где применяется конструктор.
Скажу кратко. Если когда-нибудь ты задумаешься о написании серьезного и крупного приложения(не дай бог фреймворка или библиотеки), то возведешь храм в честь ООП, ибо после 100 000 строк кода, которые могли бы потратить у тебя кучу времени и сил, ты использовал лишь 10 000, просто распихав все по классам и затем лишь обращался к ним для дальнейшей работы.
Я недавно заглянул в библиотеку jQuery и башка моя закипела. Куча строчек непонятных классов, конструкторов и замыканий, неизвестных мне функций, но при этом этот беспорядок настолько элегантно работает, что начинаешь и вправду осознавать, что "Хороший программист - это ленивый программист". Не было бы лентяев, кто бы сделал эту библиотек, чтобы сомкнуть JS до минимума и сэкономить время? Боги есть и они среди нас))
Я изначально обошел ООП мимо, сейчас жалею, что не вникнул раньше. Все придет с приходом контроля версий и больших проектов, поверь)
FeeDdieFeeD, я чет не поиму что вы хотели мне донести, про практическую полезность ооп?? Дак это я итак знаю, а вот про конструкторы вы ничего толком не сообщили))
Скажу по-секрету - избавляйтесь от jQuery, если желаете продвигаться в поисковиках. Да и вообще для пользователей удобнее, когда всё быстро работает. Учитесь работать с чистым js!
А по поводу ООП - тут вопрос спорный. Я несколько движков сделал без него, с установкой компонентов. И никаких 100000 строк не было. Всё делается гораздо проще и работает быстро и без ошибок. Пару проектов ООП даже приходилось на функциональное программирование переводить. Оно реально работает медленнее и занимает больше места. Даже отладить невозможно самые простые части кода. В функциональном программировании самое главное, чтобы каждая часть была разделена на файлы, а каждый готовый объект в папке. Много таких папок можно в одну папку объединить и всё. Зато исправить одну строчку уже точно знаешь где. А вот в ООП придётся листать вниз до бесконечности, пока не найдешь то, что нужно. Как некоторые говорят: весь мусор в одном месте))) поэтому пока не разложишь по полочкам - ничего не найдешь, либо найдешь через несколько минут, часов и т.д. А это уже пустая трата времени!
@@user-pk2jz3qf8u Тут видео про php, а не js.
Два раза пересмотрел видео, но так и не понял, для чего именно нужны эти магические методы. Как вы сказали, они каким-то образом избавляют программиста от тысячи строк дубликаций кода, но как именно, как вообще это понимать?🤔 Ну, а то, что сначала выполнился метод __construct() потом выполнился __destruct() это как бы очевидно, ведь они идут друг за другом и не иначе. Урок показал что есть, как я узнал из комментария, магические методы класса, но не раскрыл ничего из понимания этих самих методов.. Пошел я гуглить...
в конструкторе можно открывать соединение с базой данных, а в деструкторе закрывать.
Присоединяюсь к замечанию... для чего их использование не разъяснено?
Я параметры бд передаю в конструкторе, создаешь класс типа mysql и потом все функции использующие бд пишу ниже.
Бля я въехал вроде. Спасибо мужик!
Ребят подскажите как закомментировать код, я всегда вручную делала
Спасибо за видео!
А по какой книге лучше изучать ООП в PHP?
Почти все книги которые я встречал переписывают документацию в PHP. Если хотите углубится в ООП то можете попробовать книги по C++ или Java, там все более детально описывается.
Ну если работает как функция, если знаешь как работают функции и для чего они нужны, то освоить это проще просто простого. Вот и весь секрет
Есс
Как ты так кастомизировал Php storm? Есть отдельное видео?
Зачем создавать конструтор, если можно ограничиться только созданием переменных? Не понял из этого урока пользы.
php.net/manual/ru/language.oop5.decon.php
а если нужно добавить условия, какие-либо функции над данными, а не просто поприсваивать значения? Лучше все эти действия стартовые в конструкторе описать.
@@PIVKOooo Ну так в уроке об этом не сказано! Это уроки для новичков, которые хотят освоить материал, а получают только частный случай, при том самый простой, не описывающий сути вообще... В этом основная проблема и большинство комментов...
Ну и не видит нифига переменные переменные в классе, к которым обращаешься через $this->$name. Пишет, что не найдена переменная.
Уже и private и public пробовал их делать.
5:43 код такой же как и и в видео но не чего не выводится на страницу сайта
Тоже, php 8.1
НЕ понял зачем здесь нужен деструктор. В языке C++ он нужен только тогда, когда надо подчистить указатели объявленные с помощью оператора new. Но в PHP указателей ведь нет, что он здесь чистит?
Конструктор вызывается всегда при создании объекта, а деструктор также всегда, но при уничтожении объекта, но мы можем переопределять этот метод, добавляя в него функционал, например открывать и закрывать соединение с БД в этих методах, как в комментариях ниже подметили.
немного не понял, при удалении объекта, он должен удалиться, да, логично, но потом я сделал var_dump объекта и ОН СУЩЕСТВУЕТ, со всеми свойствами, может я не правильно понял, но почему так?
var_dump был сделан после всех выполненных действий деструктора?
после конечно же
Объект удалился, но после функции var_dump, т.к деструктор выполняется последним в коде. Поэтому массив с данными вывелся на экран. Попробуй использовать функцию unset объекта перед var_dump, который также вызовет деструктор, но уже непосредственно перед выполнением var_dump.
удали объект функцией unset или присвой ему значение null.
Карчое по диструктору хочу другое видео
Меня одного бесит, когда вижу что люди выделяют слова не двойным кликом, а протягиванием курсора?
классно, а cms будет?)
Спасибо за отличные уроки!!! Есть маленький вопрос. если класы большые и замороченные, или храняться в других файлах, есть простой саособ промониторить все его свойства которые там есть и которые я надобавлял в объэкты?
Это какими замороченными их нужно сделать?
@@SuprunAlexey я начинающий.. мало что смыслю.. ну а если чужой код и я не знаю какие он свойства добавил.. можно как то проверить что уже есть в объэкте или просто скролиш и просматриваеш что туда добавляли?
*ツ Подписываюсь и ставлю лайк;) Клевое видео :) буду счастлива видеть Вас на своем канале :)*
ага, спамер, никто не подписывайтесь на него)
Если честно такое чувство что я на марафоне и не могу догнать
Слишком быстро ты все рассказываешь за тобой не успеть постоянно приходится видео на паузу ставить!
+Максим Грищенко ок, приму к сведению
нормальная скорость.
P.s. это не ты быстро читаешь, а он медленно слушает.
Pss твои уроки самые быстроусваемые. Есть масса ютюб каналов с обучающими роликами, подкастами, но твой самый лучший!
лайк и респект!
Ну так поставь на паузу, хуле
Я вообще на x2 скорости смотрю - еще тот марафон =)))
видео не на паузу надо ставить , а уменьшить скорость воспроизведения.
Не понятно одно. Какой смысл вводить то что в конструкторе , нельзя просто переменные вставить в гет инфо?
Ты не сможешь задать параметры при объявлении экземпляра. Это займет, как минимум, на одну строку больше пространства в коде. Для калькулятора в уроке - это не страшно, но для программы может оказаться критично. Поэтому лучше разделять понятия конструкторы, методы и свойства, и применять все это с умом, а не абы как. Советую почитать книгу "php. Правильный путь", где подробно говорится о всех нюансах правильного написания красивого и понятного кода.
не очевидно уничтожение объекта, вывелась надпись, а что объект уничтожен остается верить на слово
Var_damp('объект') результат NULL
почему нужен этот ооп он вообще оперативку много жреть лучше использовать ассоциативные массив куки и т.д
учи, позже поймешь
echo $name, $password, $email, $city
Вот на самом деле про диструктор тут не понятно что он делает и примера толкового нету
а прошлые уроки были хорошие так что тут недочет какой то
когда хотел эксперементировать
$user->__construct();
Компуктер взорвался?))
Ага
Урок просто срань...
Автор не удосужился объяснить, что эти методы( __construct() и __destruct() ) есть по умолчанию в каждом классе. Просто если программист их не описывает, то они не реализуются. И вообще я заметил, что у данного автора много ошибок в коде, часто чего-то не договаривает, вообще складывается впечатление, что автор данного ютуб канала не профессионал. Кстати, не он один. Часто смотришь очередного "мастера" и диву даешься - ошибка за ошибкой...
Метод __destruct() можно вообще не описывать, т.к. PHP и так закроет выполнение программы и освободит оперативную память. Метод __destruct() используют, чтобы наглядно показать, что программа выполнилась и что это ее завершение. Например, вывести function __destruct() {echo 'Завершение программы';}
Метод function __destruct() записывается в конце тела класса.
А вот метод function __construct() используют, чтобы можно было передавать значения свойства класса сразу в объект. Напр.: $obj = new Class('login','password');
Таким образом в объект $obj с помощью описанного метода __construct() в классе Class будет передано 2 параметра это login и password. Метод __construct() автор описал более или менее нормально.
ну что ж
Хотите лучше это понять - учите сначала java:)))
Шутка(или нет...).
шутка так шутка
такой голос занудный, хотя бы музыку включил хоть
Видео у тебя какие-то растянутые про ОПП, можно всё быстро за час рассказать, а не мусолить кучами выпусков.
Да и можно вобще за 10 минут)))