Замыкания в PHP | Базовый курс PHP-7

Поділитися
Вставка
  • Опубліковано 9 лис 2024

КОМЕНТАРІ • 43

  • @Atikan37
    @Atikan37 8 місяців тому

    Огромное спасибо за уроки!

  • @umay888
    @umay888 3 роки тому +4

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

  • @saluteismyname
    @saluteismyname Рік тому

    Андрей, Вы очень хорошо объясняете, самый лучший курс у Вас)

  • @АндрійСадовий-и6ш
    @АндрійСадовий-и6ш 4 роки тому +1

    большое спасибо вам за ваш труд

  • @sskorostelev
    @sskorostelev 4 роки тому +1

    Хорошо объяснил. Подписался

  • @Petrov1ch1011
    @Petrov1ch1011 3 роки тому

    Отличная подача!

  • @Alexus1504
    @Alexus1504 3 роки тому

    Всё ясно!

  • @aleksandrsh3893
    @aleksandrsh3893 Рік тому +1

    Спасибо за лекцию
    наброски для дз, кому нужно

    • @andrievskii
      @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
      @aleksandrsh3893 Рік тому

      function calculateYear1($birthYear, $age) //

  • @sasha3852
    @sasha3852 3 роки тому

    хорошее объяснение, пример из php 7 в подлиннике?

  • @proszickiy
    @proszickiy 4 роки тому +3

    Спасибо вам большое Андрей, за ваши уроки за ваш труд, я хочу посоветоваться , что дальше учить "CSS для профи" или "PHP"?

  • @kolyananatolievich4724
    @kolyananatolievich4724 4 роки тому +3

    А какие я выводы должен сделать в домашнем заданнии? В замыкании переменная не меняется, но если сменить переменную и выводить именно её, а не функцию то она меняется. Но это и без второй функции было понятно что переменная будет другая при выводе, а в функции из за замыкания та же будет, или я что то не правильно сделал КАКИЕ ВЫВООДЫ Я ДОЛЖЕН СДЕЛТЬ?

    • @andrievskii
      @andrievskii  4 роки тому +1

      Именно такие 😉

    • @kolyananatolievich4724
      @kolyananatolievich4724 4 роки тому

      @@andrievskii А ну тогда всё нормально. Спасибо )))

  • @developerno1820
    @developerno1820 2 роки тому +4

    Для тех кто не справился с дз:
    $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
      @leoneqful Рік тому +1

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

  • @mugen31337
    @mugen31337 2 роки тому +5

    Ну что, понеслась критика =))
    1. Зачем нужна такая длинная проверка??? Во-первых, вы уже определили тип аргумента в функции, и если вы ей передадите что-то отличное от типа данных array, вы получите ошибку.
    2. Зачем проверять длину массива, если выражение if($some) даст абсолютно аналогичный результат.
    Вообще, объяснение замыкания в этом виде, как мне кажется, основано на замыканиях в JS. Это неправильно. Замыкание в PHP очень холиварная тема, и работает немного подругому. Раскрыта только одна особенность замыкания - хранение состояния. А как же отложенное исполнение? А как же рефлексия класса, например изменение поведения объекта через замыкание?
    Что такое замыкание в PHP вообще не раскрыто =((. Ничего не сказано про класс Closure, без которого вообще невозможно полностью разобраться в замыкании. Ничего не сказано про методы замыкания call и bindTo.
    Вообщем, если использовать замыкание как хранение состояния, вы не поймете зачем оно вам надо, и надо оно вам вообще. И тем более не разберетесь с многими важными функциями PHP, которые используют в своих аргументах замыкание, например array_map() или array_filter()...
    Ах да, если вы передадите внешнюю переменную по ссылке, то уже никакого хранения состояния в замыкании нет... Так зачем же оно, замыкание это? =)))

    • @mihaylo47
      @mihaylo47 Рік тому

      спасиб тебе, мил человек, ни одного толкового объяснения на ютубе, а тут сразу столько примеров куда копать

    • @Мойканал-э7п
      @Мойканал-э7п 4 місяці тому +2

      Потому что пример слизан из учебника Котерова

  • @daanl88l
    @daanl88l 4 роки тому +1

    Ну и вроде как советуют count в цикле не использовать. Это функция и она каждый раз считает количество элементов массива. count присваивают переменной (к примеру length) и уже переменную используют в цикле.

  • @MaksimBelokurov
    @MaksimBelokurov 4 роки тому

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

    • @Atikan37
      @Atikan37 8 місяців тому

      Только анонимные

  • @VETaL855
    @VETaL855 3 роки тому

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

  • @arturvakula3410
    @arturvakula3410 4 роки тому

    Будут ещё уроки по питону?

  • @BookwormYevgen
    @BookwormYevgen 4 роки тому +2

    Какого объема хранится окружение(в чем это измеряется? строки,переменные? ) ДО и ПОСЛЕ функции? Замена глобальных переменных понятно - зачем использовать именно такую альтернативу? Почему нельзя использовать просто глобальные переменные?

    • @ИванИванов-б3у8н
      @ИванИванов-б3у8н Рік тому

      Автор об этом не упомянул, к сожалению. Глобальные переменные использовать опасно, т.к. велика вероятность наделать трудноотлавлиемых ошибок. Если где-то в какой-то функции вы изменяете переменную (в т.ч. случайно, опечатавшись в названии, или вместо == написав =) вы можете об этом не узнать, или забыть. Т.е. после вызова функции могут поменяться какие-то глобальные переменные, которые (по изначальному замыслу) она вообще не должна использовать.
      Т.е. так делать можно, если очень осторожно, но, вообще говоря, это считается дурным тоном.

    • @СтаніславОлександрович-г9б
      @СтаніславОлександрович-г9б 2 місяці тому

      ​Это было в предыдущих уроках @@ИванИванов-б3у8н

  • @Evgenii1996
    @Evgenii1996 4 роки тому

    Андрей, скажи пжлст что думаешь о PHPStorm? Пользуешься ли ты им и стоит ли новичку в пхп его использовать
    P.S. Голос похож на меддисона особенно когда говоришь "Всем привет..." кажется сейчас скажешь "с вами меддисон" )))

    • @andrievskii
      @andrievskii  4 роки тому

      PHPStorm хорошая IDE, но в том случае, если вы постоянно пишите код и хотите или уже стали php программистом. Она удобная, ускоряет написание, отладку кода.

    • @MyNeshika
      @MyNeshika 4 роки тому

      NetBeans советую новичку, легче в настроке

  • @ИванРыбалко-р5ь
    @ИванРыбалко-р5ь 4 роки тому

    +

  • @VETaL855
    @VETaL855 3 роки тому

    Я вот не очень пойму, это правильный вывод в браузер? - "2021" Вот код:

    • @VETaL855
      @VETaL855 3 роки тому

      $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);

  • @grgvgrgv
    @grgvgrgv 3 роки тому +2

    Тихий ужас. Видос 80% воды и пустой болтовни. Просто нелепость. Чувак, ты бы готовился хоть, читал по бумажке и потом монтировал удачные дубли. Такое видео должно быть 5 минут максимум с четким грамотным изложением. Это ко всем твоим "урокам" относится. А пока неуд.

    • @andrievskii
      @andrievskii  3 роки тому +1

      Спасибо за комментарий))

    • @grgvgrgv
      @grgvgrgv 3 роки тому

      @@andrievskii я серьезно ))) Делаешь хорошее дело, но не совсем правильно. Посмотри Алексея Земскова, например, он хоть по другой теме - хороший пример качественных видео. Успехов!

    • @s.ls.l1392
      @s.ls.l1392 2 роки тому +2

      Андрей не обращай внимания, уроки очень классные благодаря тебе научился и понял многому, продолжай в том же духе

  • @tontontonic
    @tontontonic Рік тому

    а как в js тут замкнуть нельзя?
    ну типа функция принимает аргументы и возвращает через ретерн другую функцию.
    а потом внешнюю функцию с аргументами записать в переменную и вызывать эту переменную как функцию, но уже с аргуменами для внутренней возвращаемой через ретерн ф-ии.

    • @andrievskii
      @andrievskii  Рік тому

      В PHP также можно создавать замыкания, используя анонимные функции (лямбда-функции) и функции обратного вызова (callback).
      Анонимные функции и функции обратного вызова в PHP позволяют создавать замыкания, которые сохраняют контекст и имеют доступ к переменным из внешней области видимости.

  • @mavvdies
    @mavvdies Рік тому

    // task 1
    $mess = 'Какой-то текст =)' . '';
    $var_func = function ($num1, $num2) use ($mess)
    {
    return $mess . $num1 * $num2;
    };
    echo $var_func(33, 5) . '';
    // task 2
    $age = '2004' . '';
    $my_info = function($text) use ($age)
    {
    if ($age >= 2000) {
    echo $text . ' = ' . $age;
    }
    };
    echo $my_info('some text');
    // task 3
    function box()
    {
    function info($year_ob, $age)
    {
    $add = $year_ob + $age;
    return $add;
    }
    }
    echo box();
    echo info(2004, 19);