- PVSM.RU - https://www.pvsm.ru -

PHP-Дайджест № 184 (6 – 20 июля 2020)

PHP-Дайджест № 184 (6 – 20 июля 2020) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: Что будет с поддержкой PHP на Windows, PHP 8 Alpha 2, ReactPHP — официально продакшн-реди, 2 новых RFC предложения и 6 на голосовании, порция полезных инструментов, статьи, видео и подкасты.

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

PHP-Дайджест № 184 (6 – 20 июля 2020) - 2 Новости и релизы

  • PHP 8.0.0 Alpha 2 [1] — Заморозка фич запланирована на 4 августа. Учитывая регламент с 2-недельным обсуждением и голосованием, это значит, что добавиться могут только фичи, которые уже в обсуждении/голосовании.
  • PHP 7.4.8 [2], PHP 7.3.20 [3], PHP 7.2.32 [4] — Секьюрити релизы для Windows, исправляющие уязвимость CVE-2020-8169 в libcurl. Для прочих систем — обычный багфикс.
  • PHP Russia 2020, 29 ноября, Москва [5] — Дату и место определили — отметим релиз PHP 8 вместе!
  • Microsoft, Windows и поддержка PHP — Сначала представитель Microsoft написал [6], что компания продолжит поддерживать разработку и сборку PHP под Windows для версий 7.2, 7.3 и 7.4 до тех пор, пока они официально поддерживаются. Но не будет поддерживать разработку PHP для Windows начиная с версии 8.0.

    Позже он уточнил [7], что Microsoft предоставляла билд-инфраструктуру для сообщества PHP, а после ежегодного пересмотра бюджетов решили, что не будут этого делать. И хотя они больше не будут заниматься билдами PHP для Windows, тем не менее, останутся вовлечены в PHP, продолжат поддерживать PHP-разработчиков и сотрудничество с сообществом по секьюрити-фиксам.

    Это подтвердил Joe Watkins [8], который вместе с Никитой и настраивал все пайпланы в Azure [9]:

PHP-Дайджест № 184 (6 – 20 июля 2020) - 3 PHP Internals

PHP 8.0

  • check [RFC] Match expression v2 [11] — Пара отличных постов с подробным описанием нового выражения: match или switch [12] и о выражении match [13] со сравнительной таблицей [14].

    К вопросу о синтаксисе [15] или почему =>, а не : — принятый синтаксис привычен для match-выражений и используется в других языках, например, в точности такой же в C#, Rust, Scala, а похожий (->) в Java и Kotlin.

  • [RFC] StackFrame class [16] — Сейчас функция debug_backtrace() возвращает стек вызовов в виде массива массивов. Предлагается возвращать массив объектов StackFrame [17], который реализует ArrayAccess [17].
  • cross [RFC] Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON [18] — Предложение отклонено, но в 8.1 планируется полностью убрать имена токенов в сообщениях об ошибках.

Целая пачка предложений находится на стадии голосования и, похоже, все пройдут:

PHP 8.1

  • [RFC] Deprecations for PHP 8.1 [27] — Несколько возможностей предлагается объявить устаревшими. Сначала изменения предлагалось внести изменения в PHP 8.0, но Nikolas Grekas посоветовал [28] сделать релиз 8.0 без депрекейшнов, по аналогии с *.0 релизами Symfony.
  • [RFC] Objects can be declared falsifiable [29] — В RFC предлагается добавить новый интерфейс Falsifiable с магическим методом __toBool(), который позволит объектам определять и объявлять себя истинными или ложными и соответственно использоваться как bool во всех подходящих контекстах.

    В тему интересная мысль о том, что интерфейсы с суффиксами -able — плохая идея:

  • FFI Improvements [31] — Пока неофициальное предложение от камрада SerafimArts [32] по исправлениям для FFI.
  • В PHP 8.1 планируется Enum [33]Ilija Tovilo [34] написал, что планирует реализовать тип Enum в PHP 8.1. А Larry Garfield уже подготовил подробное исследование [35] и сравнил перечисления и подобные им типы в разных языках.

PHP-Дайджест № 184 (6 – 20 июля 2020) - 8 Инструменты

  • JBZoo/Composer-Diff [36] — Показывает разницу между двумя версиями файла composer.lock, помогает делать подробные changelog'и в MR/PR после «composer update». Прислал smetdenis [37].
  • JBZoo/Composer-Graph [38] — Визуализация графа зависимости для composer.json.
  • ergebnis/factory-bot [39] — Фабрика фикстур для Doctrine ORM. Подробнее об использовании и мотивации в посте [40].
  • phpsandbox.io [41] — Аналог codepen/jsfiddle только для PHP. Веб-сайт для быстрого тестирования и демонстрации кода.

PHP-Дайджест № 184 (6 – 20 июля 2020) - 9 Symfony

PHP-Дайджест № 184 (6 – 20 июля 2020) - 12 Laravel

PHP-Дайджест № 184 (6 – 20 июля 2020) - 16 Yii

PHP-Дайджест № 184 (6 – 20 июля 2020) - 18 Async PHP

  • reactphp/http 1.0 [59] — Первый стабильный релиз асинхронных HTTP клиента и сервера на базе ReactPHP.

    Все основные компоненты экосистемы ReacPHP теперь официально продакшн-реди [60] и имеют долгосрочную поддержку не менее 2х лет.

phpstorm PhpStorm

PHP-Дайджест № 184 (6 – 20 июля 2020) - 21 Материалы для обучения

PHP-Дайджест № 184 (6 – 20 июля 2020) - 26 Аудио/Видео


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

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [89].
Вопросы и предложения пишите на почту [90] или в твиттер [91].

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

Прислать ссылку [93]
Поиск ссылок по всем дайджестам [94]
Предыдущий выпуск: PHP-Дайджест № 183 [95]

Автор: Роман Пронский

Источник [96]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/355188

Ссылки в тексте:

[1] PHP 8.0.0 Alpha 2: https://www.php.net/archive/2020.php#2020-07-09-1

[2] PHP 7.4.8: https://www.php.net/releases/7_4_8.php

[3] PHP 7.3.20: https://www.php.net/releases/7_3_20.php

[4] PHP 7.2.32: https://www.php.net/releases/7_2_32.php

[5] PHP Russia 2020, 29 ноября, Москва: https://phprussia.ru/moscow/2020

[6] написал: https://externals.io/message/110907

[7] уточнил: https://externals.io/message/110985#110988

[8] Joe Watkins: https://twitter.com/krakjoe

[9] пайпланы в Azure: https://dev.azure.com/phpazuredevops/PHP/_build?definitionId=1

[10] July 15, 2020: https://twitter.com/krakjoe/status/1283267020688105473?ref_src=twsrc%5Etfw

[11] [RFC] Match expression v2: https://wiki.php.net/rfc/match_expression_v2

[12] match или switch: https://stitcher.io/blog/php-8-match-or-switch

[13] о выражении match: https://php.watch/versions/8.0/match-expression

[14] сравнительной таблицей: https://php.watch/versions/8.0/match-expression#vs-switch

[15] синтаксисе: https://gist.github.com/iluuu1994/11ac292cf7daca8162798d08db219cd5

[16] [RFC] StackFrame class: https://wiki.php.net/rfc/stack-frame-class

[17] StackFrame: https://wiki.php.net/rfc/stack-frame-class#stackframe_class

[18] [RFC] Rename T_PAAMAYIM_NEKUDOTAYIM to T_DOUBLE_COLON: https://wiki.php.net/rfc/rename-double-colon-token

[19] [RFC] Named Arguments: https://wiki.php.net/rfc/named_params

[20] зачем нужны именованные аргументы в PHP: https://stitcher.io/blog/why-we-need-named-params-in-php

[21] ответ Никиты в Internals: https://externals.io/message/110004#110018

[22] [RFC] Treat namespaced names as single token: https://wiki.php.net/rfc/namespaced_names_as_token

[23] [RFC] Saner numeric strings: https://wiki.php.net/rfc/saner-numeric-strings

[24] [RFC] Saner string to number comparisons: https://wiki.php.net/rfc/string_to_number_comparison

[25] [RFC] Nullsafe operator: https://wiki.php.net/rfc/nullsafe_operator

[26] [RFC] Allow trailing comma in closure use lists: https://wiki.php.net/rfc/trailing_comma_in_closure_use_list

[27] [RFC] Deprecations for PHP 8.1: https://wiki.php.net/rfc/deprecations_php_8_0

[28] посоветовал: https://externals.io/message/110383#110384

[29] [RFC] Objects can be declared falsifiable: https://wiki.php.net/rfc/objects-can-be-falsifiable

[30] November 20, 2019: https://twitter.com/nikolaposa/status/1197162495309418496?ref_src=twsrc%5Etfw

[31] FFI Improvements: https://github.com/SerafimArts/php-rfcs/blob/ffi-improvements/rfcs/0000-ffi-improvements.md

[32] SerafimArts: https://habr.com/ru/users/serafimarts/

[33] В PHP 8.1 планируется Enum: https://twitter.com/IlijaTovilo/status/1282986556953972737

[34] Ilija Tovilo: https://twitter.com/IlijaTovilo

[35] подробное исследование: https://github.com/Crell/enum-comparison

[36] JBZoo/Composer-Diff: https://github.com/JBZoo/Composer-Diff

[37] smetdenis: https://habr.com/ru/users/smetdenis/

[38] JBZoo/Composer-Graph: https://github.com/JBZoo/Composer-Graph

[39] ergebnis/factory-bot: https://github.com/ergebnis/factory-bot

[40] посте: https://localheinz.com/blog/2020/07/16/creating-doctrine-entities-populated-with-fake-data/

[41] phpsandbox.io: https://phpsandbox.io/

[42] Управление секретами в Symfony: https://habr.com/ru/company/otus/blog/510764/

[43] REST API в Symfony (без FosRestBundle) с использованием JWT аутентификации. Часть 1: https://habr.com/ru/company/otus/blog/509842/

[44] 10 преимуществ конфигов на PHP вместо YAML: https://tomasvotruba.com/blog/2020/07/16/10-cool-features-you-get-after-switching-from-yaml-to-php-configs/

[45] Неделя Symfony #707 (13-19 July 2020): https://symfony.com/blog/a-week-of-symfony-707-13-19-july-2020

[46] spatie/laravel-schedule-monitor: https://github.com/spatie/laravel-schedule-monitor

[47] пост: https://freek.dev/1711-introducing-laravel-schedule-monitor

[48] Использование подписанных Laravel URL-адресов для добавления ссылок на действия в сообщениях электронной почты: https://freek.dev/1713-using-laravels-signed-urls-to-add-action-links-to-emails

[49] Туториал по возможностям IlluminateHttpRequest.: https://laravel-news.com/the-mighty-illuminate-request

[50] Laravel-Дайджест (13–19 июля 2020): https://habr.com/ru/post/511624/

[51] Запускаем Laravel на AWS Lambda с помощью Bref: https://www.youtube.com/watch?v=BgGnKqDZSkA

[52] brefphp/laravel-bridge: https://github.com/brefphp/laravel-bridge

[53] Laravel Worldwide Meetup #1: https://www.youtube.com/watch?v=ajDwUNfKu48

[54] Ленивые коллекции в Laravel: https://www.youtube.com/watch?v=ajDwUNfKu48&t=300s

[55] Мощь очередей Laravel: https://www.youtube.com/watch?v=ajDwUNfKu48&t=2502s

[56] Новости Yii 2020, выпуск 5: https://habr.com/ru/post/510202/

[57] tbreuss/yii2-inertia: https://github.com/tbreuss/yii2-inertia

[58] Inertia.js: https://inertiajs.com/

[59] reactphp/http 1.0: https://github.com/reactphp/http/releases/tag/v1.0.0

[60] официально продакшн-реди: https://clue.engineering/2020/announcing-reactphp-http#stable-lts

[61] В PhpStorm будет поддержка Psalm и PHPStan: https://blog.jetbrains.com/phpstorm/2020/07/phpstan-and-psalm-support-coming-to-phpstorm/

[62] JetBrains/phpstorm-psalm-plugin: https://github.com/JetBrains/phpstorm-psalm-plugin

[63] JetBrains/phpstorm-phpstan-plugin: https://github.com/JetBrains/phpstorm-phpstan-plugin

[64] наблюдать: https://github.com/JetBrains/phpstorm-psalm-plugin/issues

[65] Общие (расшаренные) индексы в IDE от JetBrains: https://blog.jetbrains.com/idea/2020/07/shared-indexes-plugin-unveiled/

[66] плагина: https://plugins.jetbrains.com/plugin/14437-shared-indexes?_ga=2.37253088.1387215744.1595074737-1768659634.1551257028

[67] PhpStorm, But Better — Tips & Tricks Newsletter: https://phpstormbutbetter.com/

[68] первый выпуск: https://ntsanov.com/blog/phpstorm-but-better-getting-rid-of-the-distractions

[69] Новое видео от Christoph Rumpel: https://www.youtube.com/watch?v=HB2T0iWiW50

[70] PhpStorm 2020.2 Beta: https://blog.jetbrains.com/phpstorm/2020/07/phpstorm-2020-2-beta/

[71] What’s Coming in PhpStorm 2020.2: https://www.youtube.com/watch?v=vzXaqrMUvSg&list=PLQ176FUIyIUbt2HcFgl-IThchiMeUusJv

[72] Serverless LAMP: заменяем веб-сервер: https://aws.amazon.com/blogs/compute/the-serverless-lamp-stack-part-3-replacing-the-web-server/

[73] GitHub Actions как CI и PHP проектов: https://www.phparch.com/2020/07/the-workshop-github-actions-for-continuous-integration/

[74] Inertia.js – современный монолит: https://habr.com/ru/post/511470/

[75] readable — еще один линтер для PHP: https://habr.com/ru/post/510344/

[76] Как я писал кодогенератор на PHP и что из этого получилось: https://habr.com/ru/post/511544/

[77] POST запрос, составное содержимое (multipart/form-data): https://habr.com/ru/post/511114/

[78] Открытое собеседование PHP Point #1: https://www.youtube.com/watch?v=FQNd9W3nb3A

[79] Подкаст Между скобок № 10:: https://soundcloud.com/between-braces/10-vladimir-yants-nuzhno-li-unit-testirovanie

[80] Никита Попов — What’s new in PHP 8.0?: https://www.youtube.com/watch?v=NbBRXwu1Md8

[81] Интервью с Jordi Boggiano: https://www.youtube.com/watch?v=yeWnFyfTXOQ

[82] Макс Рафалко — Принципы проектирования пакетов на практике: https://www.youtube.com/watch?v=JKt7hF_nxBM

[83] Derick Rethans — Introduction to PHP Extensions: https://www.youtube.com/watch?v=WMOI2U8McTE

[84] Интервью с Marco Pivetta: https://www.twitch.tv/videos/640893205

[85] PHP Internals News #61: https://phpinternals.news/61

[86] стабильной сортировке: https://wiki.php.net/rfc/stable_sorting

[87] PHP Internals News #62: https://phpinternals.news/62

[88] George Peter Banyard: https://twitter.com/Girgias

[89] личку: https://habrahabr.ru/conversations/pronskiy/

[90] почту: mailto:roman@pronskiy.com

[91] твиттер: https://twitter.com/pronskiy

[92] PHP Digest: https://t.me/phpdigest

[93] Прислать ссылку: https://bit.ly/php-digest-add-link

[94] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/

[95] Предыдущий выпуск: PHP-Дайджест № 183: https://habr.com/ru/post/509738/

[96] Источник: https://habr.com/ru/post/511686/?utm_source=habrahabr&utm_medium=rss&utm_campaign=511686