ООП для начинающих PHP. Магические методы get,set,clone

  Рет қаралды 31,171

Web Developer Blog

Web Developer Blog

Күн бұрын

Пікірлер: 52
@АндрейВаняев-т2ь
@АндрейВаняев-т2ь 5 жыл бұрын
Чем дальше, тем все хуже и хуже... о чем урок?... Это для новичков или для тех, кто "уже изучал какие то языки программирования и знаком со схожими понятиями"!?!?!? ЗАЧЕМ все это нужно? Что эти методы, для чего они, чем отличаются от обычных методов. Из подобного объяснения в уроке, им больше подходит не "магические", а абстрактные, ибо не понятно о чем они... Подитожим: есть магические методы (get, set и clone). Они пишутся с двойного подчеркивания. Далее, просто повторите код за мной, и ... это все, что я хотел рассказать в этом уроке. Подписывайтесь и оставляйте вопросы в комментах (зачем то).
@JustinBieberXbox360
@JustinBieberXbox360 4 жыл бұрын
я думал я один думаю что эти уроки отстой...
@PIVKOooo
@PIVKOooo 7 жыл бұрын
Для тех, кто не понял, это все просто функции, вызываемые при клонировании объекта (со стороны клонированного), при получении или задании свойства класса (включая приватные). Они просто вызываются, за исключением __set(), которое по умолчанию еще и возвращает не новое значение свойства, а именно переданное значение $value. Для того, чтобы метод __get возвращал именно значение, в него нужно добавить return $this->$name; Для того, чтобы __set именно задавал значение нужному св-ву, нужно в него добавить $this->$name = $value;
@UkraineBoy86
@UkraineBoy86 5 жыл бұрын
Спасибо за уточнение! Это немного смущало, теперь понял этот момент с присваиванием переменных.
@Игорь-е3ф9о
@Игорь-е3ф9о 5 жыл бұрын
На всякий случай пояснение про клонирование, если просто $user2 = $user1, фактически мы не клонируем объект, а передаем лишь ссылку на него, т.е. обе переменные будут ссылаться на один и тот же объект и изменение его свойств через любую из переменных даст изменение в другой т.к. фактически они ссылаются на один и тот же объект, применяя же клонирование, мы практически создаем копию объекта и имеем 2 разных объекта, изменение свойств одного не приводит к изменению свойств другого
@lvivduncan
@lvivduncan 7 жыл бұрын
более наглядным было бы: function __clone() { $this->id++; } тогда каждый следующий клон получает не обнуление, а увеличение айди на единицу
@User-cvhuidghjv
@User-cvhuidghjv 6 жыл бұрын
Только если будет клон клона, а если это будут клоны оригинального класса User, то у всех будет id=1.
@freeoratory7280
@freeoratory7280 6 жыл бұрын
Примеры бы на живых примерах в следующих видео увидеть. Хоть самые простые но полезные
@myjam505
@myjam505 7 жыл бұрын
Вообще ничего не понял. Ноль объяснений. Такая сухая подача информации я в шоке. Всё равно что документацию читать. Пойду её и почитаю...
@АндрейСтавицкий-ю3п
@АндрейСтавицкий-ю3п 4 жыл бұрын
Я тоже ничего не понял. И да, открыл документацию - там понятней объяснено для чего оно нужно)
@thecake1128
@thecake1128 7 жыл бұрын
эм так как же работаю магические методы get и set я неуслышал в видео
@SuprunAlexey
@SuprunAlexey 7 жыл бұрын
Может вы просто не до конца поняли. пересмотрите видео
@thecake1128
@thecake1128 7 жыл бұрын
да не до конца понял смотрел 3 раза уже) прилось смотреть документацию после документации стало понятно , но вашь пример легкий , что весьма кстате , было проще понять
@thecake1128
@thecake1128 7 жыл бұрын
и еще вопрос в set нужно обязательно указывать 2 параметр?
@vladshcherbachenia9803
@vladshcherbachenia9803 7 жыл бұрын
@User-cvhuidghjv
@User-cvhuidghjv 6 жыл бұрын
@@thecake1128 Обязательно, но это же магическая функция, сама вызывается, аргументы сами ставятся, можно просто не использовать второй параметр.
@kanekabal416
@kanekabal416 5 жыл бұрын
зачем {{ private $number = 1 }} ??? причем оно тут?
@UkraineBoy86
@UkraineBoy86 5 жыл бұрын
Хороший урок, просто возможно не хватает объяснения на живом более используемом примере из жизни.
@АлексейТерлецкий-у8л
@АлексейТерлецкий-у8л 7 жыл бұрын
5.47 Ржу не могу. "Это в принципе не самый удачный пример с использование имени и города но в принципе для понимания как работает ..." . Так в чем пример не удачен в имени Алексей или в городе Киев ))))))) . Я думаю не стоит бояться не того, не другого магические методы __get,__set,__clone мы поймем. Ждем продолжения и побольше примеров на практике !
@SuprunAlexey
@SuprunAlexey 7 жыл бұрын
Не удачно в том моменте, что использовать в таком контексте как в примере вы вряд ли будете. Не в имени и городе дело)
@Таксист-Эволюционер
@Таксист-Эволюционер 6 жыл бұрын
1-53 Непонял , а каким образом выводится , если нет вызова ?
@AlesisAlexis
@AlesisAlexis 6 жыл бұрын
Отличные уроки, никакой воды, только самое нужное и все в тему. Респект автору!
@rau149
@rau149 4 жыл бұрын
Круто
@user-maximilianno
@user-maximilianno 7 жыл бұрын
Не понятно - echo $obj->number выводит слово "you get number", Нафига его выводить, если мне нужно Значение этой переменной, а не слово, которое я и так знаю. Сеттер тоже выводит что я якобы сделал, но значение то не меняется, это показывает var_dump($obj);
@user-maximilianno
@user-maximilianno 7 жыл бұрын
короче вот так надо: public function __get($name){ return $this->$name; } public function __set($name, $val){ $this->$name = $val; }
@S1mpaaa
@S1mpaaa 2 жыл бұрын
про get и set вообще не понятно
@enottom2003
@enottom2003 5 жыл бұрын
Я ток одного не понял, зачем создавать private свойства, а потом еще гетер и сетер, из-за которых работа с этими свойствами никак не отличается от public? Вроде как с помощью private мы наоборот закрываем доступ, а __set и __get, на случай если мы передумаем, или что? 0_о
@ДаниилСафронов-е8т
@ДаниилСафронов-е8т 5 жыл бұрын
Ну хотя бы для того что бы можно было проверить получаемые данные в том же сеттере if val>0 тогда записать это значение, а нет то записать другое или вообще ничего не записывать... В принципе это же можно сделать написав метод (или функцию), но тогда простым присвоить не отделаетесь и придется вызывать этот метод (функцию) и передавать в нее параметр.... Но объяснение работы гет (сет) здесь... это просто вынос мозга....
@webmaker_studio
@webmaker_studio 2 жыл бұрын
public function __get($name){ echo "You get {$this->$name}"; Так буде цікавіше }
@lodehosar9686
@lodehosar9686 5 жыл бұрын
Если делать делай на совесть плиз.Обьясняй все лучше розжуй и обьясни где мы будем ето использовать
@ИльиныхИван
@ИльиныхИван Жыл бұрын
Цитата "Если переменная класса закрыта, то обращение к ней возможно только через открытые методы для того, что бы это выглядело как будто это открытая переменная используют методы GET & SET" . Вопрос: Нахера ее закрывали если к ней все равно потом обращаются? САм то понял че налепил? Вот как нужно объяснять kzbin.info/www/bejne/a5_TZImif7l7iMU
@SiegeMechanic
@SiegeMechanic 3 жыл бұрын
я не понял,потом понял из других источников:
@ДмитрийТарадай-с3ж
@ДмитрийТарадай-с3ж 3 жыл бұрын
Я так реализовал, немного понятней class GetSet { private $number = 1; private $age = 35; public function __get($name) { echo 'Yuu get ' . $this->$name . ''; } public function __set($name, $val) { $this->$name = $val; echo 'You set ' . $name .' to ' . $val .''; } }
@arhit_08
@arhit_08 2 жыл бұрын
объясните для непонятливых, откуда взялась $name, ее ведь нету в свойствах класса, и на что она ссылается не пойму
@racer0064
@racer0064 Жыл бұрын
@@arhit_08 это аргумент для метода, когда вызываем $obj-> number там где стоял $name, подставится $number
@vladshcherbachenia9803
@vladshcherbachenia9803 7 жыл бұрын
СПАСИБО!ПОНЯЛ!!!!АВТОР РЕСПЕКТ ТЫ ЛУЧШИЙ !!! ПРИМЕР __set() __get()
@alexandershnaidman8188
@alexandershnaidman8188 Жыл бұрын
Совсем не понятно ...
@297259
@297259 7 жыл бұрын
Уроки говно! Примеры без смысла! Сути совсем нет
@itdev4680
@itdev4680 4 жыл бұрын
Слабо, очень слабо, объяснил по сути ничего не объяснив. Можно сказать что просто перечислил
@SuprunAlexey
@SuprunAlexey 4 жыл бұрын
itdev ясно
@itdev4680
@itdev4680 4 жыл бұрын
@@SuprunAlexey Ну ты это... не обижайся прям сильно) Просто если что-то делаешь - делай хорошо, или не делай
@artem_malashenko
@artem_malashenko 3 жыл бұрын
Метод клоун.
@297259
@297259 7 жыл бұрын
Где полиморфизм в твоих уроках???
@enottom2003
@enottom2003 5 жыл бұрын
Где ваш мозг, уважаемый человек (но это еще доказать нужно, кто знает какое животное там у монитора сидит)? Ты видел документацию? Она кстати на русском. Специально для таких как ты (намек на неспособность обучаться вообще чему либо, английскому в том числе). Бесят такие дегенераты, я бы просто банил. И чем тебе абстрактные классы и методы не полиморфизм? А, хотя стоп, беру свои слова обратно, я посмотрел твои видео, их там кстати очень много (одно)... Прости, ты просто образец того как нужно снимать видео, качественный звук, удобный просмотр, а также на твоем канале очень легко можно найти интересующее видео. Ты гуру, и ты заслуживаешь намногоо больше, чем 20 подписчиков (долго знакомых выпрашивал подписаться?). Курение убивает. И вас убьет. Надеюсь.
@АндрейИльин-д6ж
@АндрейИльин-д6ж 5 жыл бұрын
а кто 33 дизлайк поставил?
@SuprunAlexey
@SuprunAlexey 5 жыл бұрын
Не ты случайно?
@serhiy2020
@serhiy2020 6 жыл бұрын
намного понятней будет так: class MyClass { private $firstField; private $secondField; public function __get($property) { if (property_exists($this, $property)) { return $this->$property; } } public function __set($property, $value) { if (property_exists($this, $property)) { $this->$property = $value; } return $this; } }
@ИльиныхИван
@ИльиныхИван Жыл бұрын
ТИпа выебнулся? Чем твой высер отличается от его? Такая же хуета непонятная, только еще if-ов напихал...
@sergknurov4369
@sergknurov4369 6 жыл бұрын
Уроки полный отстой, сути нет все как по мануалу, и чему они учат? Это просто примеры.
ООП для начинающих PHP. Пространства имен
6:38
PHP ООП: внедрение зависимостей и магия рефлексии
1:21:13
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 55 МЛН
小丑教训坏蛋 #小丑 #天使 #shorts
00:49
好人小丑
Рет қаралды 54 МЛН
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
Сеттеры и Геттеры в php | __set() и __get() | Базовый курс PHP-7
20:12
Андрей Андриевский
Рет қаралды 8 М.
PHP и ООП. Классы и объекты. Смысл ООП.
22:01
Дмитрий Лаврик
Рет қаралды 61 М.
СОБЕСЕДОВАНИЕ по PHP: к каким ВОПРОСАМ готовиться?
37:44
TeachMeSkills Школа программирования
Рет қаралды 40 М.
Лучший Гайд по Kafka для Начинающих За 1 Час
1:15:01
Формы в PHP. GET, POST
20:27
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 15 М.
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 55 МЛН