спасибо, по сравнению с тремя другими роликами и двумя статьями именно у вас в ролике нашла понимание, что такое замыкание
@saluteismyname Жыл бұрын
Андрей, Вы очень хорошо объясняете, самый лучший курс у Вас)
@mugen313372 жыл бұрын
Ну что, понеслась критика =)) 1. Зачем нужна такая длинная проверка??? Во-первых, вы уже определили тип аргумента в функции, и если вы ей передадите что-то отличное от типа данных array, вы получите ошибку. 2. Зачем проверять длину массива, если выражение if($some) даст абсолютно аналогичный результат. Вообще, объяснение замыкания в этом виде, как мне кажется, основано на замыканиях в JS. Это неправильно. Замыкание в PHP очень холиварная тема, и работает немного подругому. Раскрыта только одна особенность замыкания - хранение состояния. А как же отложенное исполнение? А как же рефлексия класса, например изменение поведения объекта через замыкание? Что такое замыкание в PHP вообще не раскрыто =((. Ничего не сказано про класс Closure, без которого вообще невозможно полностью разобраться в замыкании. Ничего не сказано про методы замыкания call и bindTo. Вообщем, если использовать замыкание как хранение состояния, вы не поймете зачем оно вам надо, и надо оно вам вообще. И тем более не разберетесь с многими важными функциями PHP, которые используют в своих аргументах замыкание, например array_map() или array_filter()... Ах да, если вы передадите внешнюю переменную по ссылке, то уже никакого хранения состояния в замыкании нет... Так зачем же оно, замыкание это? =)))
@mihaylo47 Жыл бұрын
спасиб тебе, мил человек, ни одного толкового объяснения на ютубе, а тут сразу столько примеров куда копать
@Мойканал-э7п6 ай бұрын
Потому что пример слизан из учебника Котерова
@АндрійСадовий-и6ш4 жыл бұрын
большое спасибо вам за ваш труд
@sskorostelev4 жыл бұрын
Хорошо объяснил. Подписался
@developerno18202 жыл бұрын
Для тех кто не справился с дз: $date1 = 1998; $func = function () use ($date1){ global $date2; function inn($year, $age){ $date2 = $year + $age; return $date2; } $date1 = $date2; return $date1; }; $func(); inn(1998,24); echo $date1;
@leoneqful Жыл бұрын
Даже если убрать замыкание в этот примере, ничего не изменится. Задание странно написано.
@aleksandrsh3893 Жыл бұрын
Спасибо за лекцию наброски для дз, кому нужно
@andrievskii Жыл бұрын
// Создаем функцию changeBirthday, которая принимает переменную $birthday по ссылке (&$birthday) и новую дату рождения function changeBirthday(&$birthday, $newBirthYear) { $birthday = date('Y-m-d', strtotime("$newBirthYear-01-01")); } // Устанавливаем начальное значение переменной $birthday $birthday = '2000-01-01'; // Вычисляем новую дату рождения $age = 23; $newBirthYear = calculateYear1($birthday, $age); // Изменяем значение переменной $birthday changeBirthday($birthday, $newBirthYear); // Выводим итоговую дату рождения echo "Итоговая дата рождения после изменений: $birthday";
@aleksandrsh3893 Жыл бұрын
function calculateYear1($birthYear, $age) //
@Petrov1ch10113 жыл бұрын
Отличная подача!
@kolyananatolievich47244 жыл бұрын
А какие я выводы должен сделать в домашнем заданнии? В замыкании переменная не меняется, но если сменить переменную и выводить именно её, а не функцию то она меняется. Но это и без второй функции было понятно что переменная будет другая при выводе, а в функции из за замыкания та же будет, или я что то не правильно сделал КАКИЕ ВЫВООДЫ Я ДОЛЖЕН СДЕЛТЬ?
@andrievskii4 жыл бұрын
Именно такие 😉
@kolyananatolievich47244 жыл бұрын
@@andrievskii А ну тогда всё нормально. Спасибо )))
@BookwormYevgen4 жыл бұрын
Какого объема хранится окружение(в чем это измеряется? строки,переменные? ) ДО и ПОСЛЕ функции? Замена глобальных переменных понятно - зачем использовать именно такую альтернативу? Почему нельзя использовать просто глобальные переменные?
@ИванИванов-б3у8н Жыл бұрын
Автор об этом не упомянул, к сожалению. Глобальные переменные использовать опасно, т.к. велика вероятность наделать трудноотлавлиемых ошибок. Если где-то в какой-то функции вы изменяете переменную (в т.ч. случайно, опечатавшись в названии, или вместо == написав =) вы можете об этом не узнать, или забыть. Т.е. после вызова функции могут поменяться какие-то глобальные переменные, которые (по изначальному замыслу) она вообще не должна использовать. Т.е. так делать можно, если очень осторожно, но, вообще говоря, это считается дурным тоном.
@СтаніславОлександрович-г9б3 ай бұрын
Это было в предыдущих уроках @@ИванИванов-б3у8н
@sasha38524 жыл бұрын
хорошее объяснение, пример из php 7 в подлиннике?
@daanl88l4 жыл бұрын
Ну и вроде как советуют count в цикле не использовать. Это функция и она каждый раз считает количество элементов массива. count присваивают переменной (к примеру length) и уже переменную используют в цикле.
@shyma_grasious3 жыл бұрын
да верно
@VETaL8553 жыл бұрын
А в выводе можно сказать, что если переменную для замыкания изменить внутри функции то и она изменится?
@proszickiy4 жыл бұрын
Спасибо вам большое Андрей, за ваши уроки за ваш труд, я хочу посоветоваться , что дальше учить "CSS для профи" или "PHP"?
@arturvakula34104 жыл бұрын
Будут ещё уроки по питону?
@MaksimBelokurov4 жыл бұрын
Спасибо за ваши уроки. Подскажите, а в замыканиях функции могут быть только анонимные или обычные тоже могут быть?
@Atikan379 ай бұрын
Только анонимные
@Alexus15043 жыл бұрын
Всё ясно!
@Evgenii19964 жыл бұрын
Андрей, скажи пжлст что думаешь о PHPStorm? Пользуешься ли ты им и стоит ли новичку в пхп его использовать P.S. Голос похож на меддисона особенно когда говоришь "Всем привет..." кажется сейчас скажешь "с вами меддисон" )))
@andrievskii4 жыл бұрын
PHPStorm хорошая IDE, но в том случае, если вы постоянно пишите код и хотите или уже стали php программистом. Она удобная, ускоряет написание, отладку кода.
@MyNeshika4 жыл бұрын
NetBeans советую новичку, легче в настроке
@VETaL8553 жыл бұрын
Я вот не очень пойму, это правильный вывод в браузер? - "2021" Вот код:
@VETaL8553 жыл бұрын
$environment = 25; $nothing = function () use ($environment) { function inn ($years, $year) { $global = $year + $years; return $global; global $global; } $environment = $global; echo $environment; }; $nothing(); $years = 14; $year = 2007; echo inn($years, $year);
@ИванРыбалко-р5ь4 жыл бұрын
+
@grgvgrgv3 жыл бұрын
Тихий ужас. Видос 80% воды и пустой болтовни. Просто нелепость. Чувак, ты бы готовился хоть, читал по бумажке и потом монтировал удачные дубли. Такое видео должно быть 5 минут максимум с четким грамотным изложением. Это ко всем твоим "урокам" относится. А пока неуд.
@andrievskii3 жыл бұрын
Спасибо за комментарий))
@grgvgrgv3 жыл бұрын
@@andrievskii я серьезно ))) Делаешь хорошее дело, но не совсем правильно. Посмотри Алексея Земскова, например, он хоть по другой теме - хороший пример качественных видео. Успехов!
@s.ls.l13923 жыл бұрын
Андрей не обращай внимания, уроки очень классные благодаря тебе научился и понял многому, продолжай в том же духе
@tontontonic Жыл бұрын
а как в js тут замкнуть нельзя? ну типа функция принимает аргументы и возвращает через ретерн другую функцию. а потом внешнюю функцию с аргументами записать в переменную и вызывать эту переменную как функцию, но уже с аргуменами для внутренней возвращаемой через ретерн ф-ии.
@andrievskii Жыл бұрын
В PHP также можно создавать замыкания, используя анонимные функции (лямбда-функции) и функции обратного вызова (callback). Анонимные функции и функции обратного вызова в PHP позволяют создавать замыкания, которые сохраняют контекст и имеют доступ к переменным из внешней области видимости.