PHP-Дайджест № 176 (11 – 23 марта 2020)

Автор: admin от 23-03-2020, 04:40, посмотрело: 172

PHP-Дайджест № 176 (11 – 23 марта 2020)


Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP и Composer 1.10, переносы конференций, 3 новых RFC предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.



Приятного чтения!



PHP 7.4.4, PHP 7.3.16, PHP 7.2.29 — Секьюрити релизы, всем рекомендуется обновиться.
  • Composer 1.10.0 — Среди прочих изменений, добавлено новое поле «funding» в composer.json, в котором можно указать, как поддержать проект. По умолчанию данные берутся из FUNDING.yml на GitHub. Также добавлена новая команда composer fund, которая показывает информацию о спонсорстве для ваших зависимостей.

  • Перенос мероприятий

    В связи с эпидемией и ограничительными мерами, многие мероприятия перенесены или переходят в онлайн.

    PHP Russia – Конференция перенесена, а 13 мая пройдёт первая PHP Russia Online.

    PHP-Дайджест № 176 (11 – 23 марта 2020) Митапы PHP-сообществ в марте, которые переходят в онлайн или переносятся.

    • Переходят в онлайн: Laracon EU Madrid, Midwest PHP.




  • PHP-Дайджест № 176 (11 – 23 марта 2020) PHP Internals




    • [RFC] str_contains — Предложение принято. Функция str_contains() будет проверять, содержится ли строка в другой строке.

    • [RFC] throw expression — В PHP нельзя бросить исключение из стрелочной функции, потому что throw – это оператор, а не выражение. Предлагается сделать его выражением и тогда возможно будет использование в коротких лямбдах, в тернарных операторах и других конструкциях:
      $callable = fn() => throw new Exception();
      
      $value = $nullableValue ?? throw new InvalidArgumentException();
      
      $value = $falsableValue ?: throw new InvalidArgumentException();
      
      $value = !empty($array)
                  ? reset($array)
                  : throw new InvalidArgumentException();

    • [RFC] Compact Object Property Assignment — Предлагается добавить компактный синтаксис для присвоения значений нескольким свойствам объекта в одном выражении. Идея уже раньше рассматривалась в рамках [RFC] Object Initializer, но не прошла голосование. На этот раз синтаксис весьма странный:
      doTheFoo((new Foo)[
          a = 1,
          b = 2,
          c = 3,
      ]);
      
      // Эквивалентно:
      
      $myObj = new Foo();
      
      $myObja = 1;
      $myObjb = 2;
      $myObjc = 3;
      
      doTheFoo($myObj);

    • [RFC] Is Literal Check — Предлагается добавить функцию is_literal(), чтобы разработчики/фреймворки могли быть уверены, что они работают с безопасным значением, то есть созданным из одного или нескольких литералов, опредёленных в PHP, а не сформированных динамически из пользовательского ввода.
      define('TABLE', 'example');
      
      $sql = 'SELECT * FROM ' . TABLE . ' WHERE id = ?';
      
      is_literal($sql); // Returns true
      
      $sql .= ' AND id = ' . mysqli_real_escape_string($db, $_GET['id']);
      
      is_literal($sql); // Returns false
      


      К предложению много вопросов, и реализация нетривиальная. Похоже, шансов мало.

    • [RFC] Write-Once Properties — Судя по ходу голосования за неизменяемые свойства, предложение в текущем виде не преодолеет порог. Одним из основных аргументов против является тот факт, что свойства, объявленные неизменяемыми, нельзя будет изменить даже изнутри класса.

    • Отличный репозиторий с описанием всех непринятых RFC пополнился статьёй о пропуске дефолтных значений при вызове функций.

      Все статьи содержат описания трудностей и прогнозы дальнейшей судьбы.

      Ещё автор добавил статью Understanding RFC attitudes о том, почему вообще какие-то предложения проходят, а какие-то нет, и как участники PHP Internals оценивают RFC.



    PHP-Дайджест № 176 (11 – 23 марта 2020) Инструменты




    • async-aws/aws — Легковесная и асинхронная альтернатива официальному SDK для AWS.

    • lisachenko/z-engineNightTiger продолжает демонстрировать все новые возможности PHP благодаря FFI.

      В документации пример создания расширения для PHP на PHP, с помощью которого данные можно сохранять в памяти между запросами.

    • Badcow/DNS — Объектное представление записей DNS в PHP, а также парсер и билдер записей.

    • yswery/PHP-DNS-SERVER — И полноценный DNS-сервер, написанный полностью на PHP с использованием предыдущей библиотеки.

    • nikolaposa/rate-limit — Рейт-лимитер общего назначения с бекендом на Redis.

    • Spartaques/phpkafkacore — Библиотека для работы с Kafka на чистом PHP, альтернатива ext-rdkafka.



    PHP-Дайджест № 176 (11 – 23 марта 2020) Symfony





    PHP-Дайджест № 176 (11 – 23 марта 2020) Laravel





    Async PHP





    PHP-Дайджест № 176 (11 – 23 марта 2020) Материалы для обучения





    PHP-Дайджест № 176 (11 – 23 марта 2020) Аудио/Видео





    Спасибо за внимание!



    Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.

    Вопросы и предложения пишите на почту или в твиттер.



    Больше новостей и комментариев в Telegram-канале PHP Digest.



    Прислать ссылку

    Поиск ссылок по всем дайджестам

    <- Предыдущий выпуск: PHP-Дайджест № 175



    Источник: Хабр / Интересные публикации

    Категория: Программирование

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent