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

PHP-Дайджест № 189 (21 сентября – 5 октября 2020)

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 1 и переименование параметров внутренних функций, PhpStorm 2020.3 EAP, многострочные короткие лямбды, атрибуты для групп свойств и другие новости PHP Internals, порция полезных инструментов, статьи, стримы, подкасты.

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

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 2 Новости и релизы

  • PHP 8.0.0 RC 1 [1] — Стартовал цикл релиз-кандидатов ветки 8. Запланировано 4 выпуска и второй релиз-кандидат ожидается 15 октября.

    Усилия core-команды сосредоточены на пересмотре имен аргументов во всех модулях. Пример переименований в PDO [2]. За ходом можно наблюдать здесь [3].

  • PhpStorm 2020.3 EAP [4] — Стартовала программа раннего доступа. Уже реализована полная поддержка PHP 8 — поможет быстро сделать пакеты совместимыми с новой версией интерпретатора. Запланированы Xdebug 3, PHPStan/Psalm (в следующих билдах), интеграция Guzzle с HTTP-клиентом и другие фичи.
  • PHP 7.2.34 [5]
  • PHP 7.3.23 [6]
  • PHP 7.4.11 [7]
  • ru phpcommunity.ru [8] — PHP-митапы, чаты и ютуб-каналы.
  • Традиционный Hacktoberfest [9] с возможностью получить футболку за 4 пул-реквеста в открытые проекты пошел в этом году не по плану.

    Какой-то ютубер опубликовал инструкцию и показал, как делать примитивные пул-реквесты с изменениями в readme. Посыпался шквал бессмысленных PR. В итоге DigitalOcean теперь [10] учитывают пул-реквесты только в те репозитории, у которых авторы явно указан топик ‘hacktoberfest’.

    Если вы хотите поучаствовать в опенсорсе и получить футболку, то вот инструкция как сделать хороший пул-реквест [11] и список и issues с тегом #hacktoberfest [12] в PHP-проектах.

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 4 PHP Internals

  • check [PR] Attributes on property groups [13] — Атрибуты можно будет указывать сразу для группы свойств, а не только по одному, так же как это работает для модификаторов доступа.
    class FooBar {
        #[NonNegative]
        public int $x, $y, $z;
    }
    
  • check [PR] Attributes and strict types [14] — Также атрибуты будут принимать во внимание директиву strict_types=1.
  • [PR] OPCache: Direct execution opcode file without php source code file [15] — Концепт в виде в PR, в котором автор предлагает сделать возможным сохранять бинарный файл опкеша и запускать его уже без исходника. По сути, это что-то напоминающее подход в Java или очень похожее на питоновские файлы .pyc / .pyo.

    Теоретически, в этом случае можно было бы распространять предварительно скомпилированный PHP-код без исходников. Типа как .phar, но уже интерпретированный.

    Но в обсуждении [16] указали на проблемы такого подхода. Формат опкода в PHP нестабилен и несовместим от версии к версии. Причем даже в рамках патч-релизов, то есть код скомпилированный на PHP 7.4.22 может просто свалиться с segfault на PHP 7.4.23. А сделать его стабильным — маловероятно.

  • [PR] Multiline arrow functions [17] — Короткие лямбды, добавленные в PHP 7.4, могут содержать только одно выражение. В этом пул-реквесте представлена реализация многострочных коротких лямбд:
    $guests = array_filter($users, fn ($user) => {
    
      $guest = $repository->findByUserId($user->id);
    
    
      return $guest !== null && in_array($guest->id, $guestsIds);
    
    });
    

    Из явных преимуществ по сравнению с обычными лямбдами можно отметить автоматический захват скоупа, то есть не надо добавлять use.

    Также остается открытым вопрос синтаксиса, а именно стоит ли добавлять стрелку =>:

    fn() => {}

    или

    fn() {}

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 7 Инструменты

  • thephpleague/event 3.0.0 [18] — Популярный пакет для событий теперь совместим с PSR-14.
  • terrylinooo/simple-cache [19] — Драйверы кеша по стандарту PSR-16 для хранения в файлах, Redis, MySQL, SQLite, APC, APCu, Memcache, Memcached и WinCache.
  • Code With Me (EAP) [20] — В тестовом режиме доступен плагин для совместной работы в IDE от JetBrains.
  • Bolt 4.0 [21] — Обновление популярной CMS на Symfony- компонентах.

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 8 Symfony

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 9 Laravel

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 16 Yii

  • W3C [36] откажется от WordPress и будут использовать CraftCMS [37], который сделан на базе Yii 2. Сама новость не была бы такой интересной без отличного документа [38] о том, какие аспекты принимались во внимание при выборе.

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 17 Async PHP

  • micc83/mailamie [39] — Простой SMTP-сервер для тестирования отправки почты. Реализован на ReactPHP.

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 18 Материалы для обучения

PHP-Дайджест № 189 (21 сентября – 5 октября 2020) - 21 Аудио/Видео


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

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

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

Прислать ссылку [61]
Поиск ссылок по всем дайджестам [62]
Предыдущий выпуск: PHP-Дайджест № 188 [63]

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

Источник [64]


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

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

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

[1] PHP 8.0.0 RC 1: https://www.php.net/archive/2020.php#2020-10-01-4

[2] в PDO: https://github.com/php/php-src/pull/6220/files

[3] здесь: https://github.com/php/php-tasks/issues/23

[4] PhpStorm 2020.3 EAP: https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-early-access-program-is-now-open/

[5] PHP 7.2.34: https://www.php.net/ChangeLog-7.php#7.2.34

[6] PHP 7.3.23: https://www.php.net/ChangeLog-7.php#7.3.23

[7] PHP 7.4.11: https://www.php.net/ChangeLog-7.php#7.4.11

[8] phpcommunity.ru: https://phpcommunity.ru/

[9] Hacktoberfest: https://hacktoberfest.digitalocean.com/

[10] теперь: https://hacktoberfest.digitalocean.com/hacktoberfest-update

[11] как сделать хороший пул-реквест: https://stitcher.io/blog/what-a-good-pr-looks-like

[12] #hacktoberfest: https://github.com/search?l=&p=5&q=label%3Ahacktoberfest+language%3APHP+state%3Aopen&ref=advsearch&type=Issues

[13] [PR] Attributes on property groups: https://github.com/php/php-src/pull/6186

[14] [PR] Attributes and strict types: https://externals.io/message/111915

[15] [PR] OPCache: Direct execution opcode file without php source code file: https://github.com/php/php-src/pull/6146

[16] обсуждении: https://externals.io/message/111965

[17] [PR] Multiline arrow functions: https://github.com/php/php-src/pull/6246

[18] thephpleague/event 3.0.0: https://github.com/thephpleague/event

[19] terrylinooo/simple-cache: https://github.com/terrylinooo/simple-cache

[20] Code With Me (EAP): https://blog.jetbrains.com/blog/2020/09/28/code-with-me-eap/

[21] Bolt 4.0: https://github.com/bolt/core

[22] В Symfony 5.2 будут атрибуты PHP 8: https://symfony.com/blog/new-in-symfony-5-2-php-8-attributes?utm_medium=feed

[23] Динамическое изменение уровня логирования в приложениях Symfony.: https://matthiasnoback.nl/2020/09/symfony-changing-the-log-level/

[24] Неделя Symfony #718 (28 сентября — 4 октября 2020): https://symfony.com/blog/a-week-of-symfony-718-28-september-4-october-2020

[25] spatie/laravel-typescript-transformer: https://github.com/spatie/laravel-typescript-transformer

[26] в посте: https://rubenvanassche.com/typing-your-frontend-from-the-backend/

[27] Система управления иерархическими древовидными комментариями для Laravel: https://habr.com/ru/post/520124/

[28] drandin/closure-table-comments: https://github.com/drandin/closure-table-comments

[29] Сделайте свое приложение масштабируемым, оптимизировав производительность ORM: https://habr.com/ru/company/otus/blog/521488/

[30] Новинки Laravel 8: https://habr.com/ru/company/otus/blog/520556/

[31] Laravel Jetstream — новый скаффолдинг для фреймворка: https://habr.com/ru/post/520596/

[32] Laravel–Дайджест (28 сентября – 4 октября 2020): https://habr.com/ru/post/521978/

[33] Обновленные гайдлайны по PHP и Laravel от Spatie: https://spatie.be/guidelines/laravel-php

[34] Laravel Worldwide Meetup #3: Yaz Jallad и Адель Фаизрахманов: https://www.youtube.com/watch?v=h44R_ru8D3o

[35] PHP Russia: https://phprussia.ru/moscow/2020/

[36] W3C: https://www.w3.org/

[37] CraftCMS: https://github.com/craftcms/cms

[38] отличного документа: https://w3c.studio24.net/docs/cms-strategy-and-requirements/

[39] micc83/mailamie: https://github.com/micc83/mailamie

[40] Какая же цветовая схема IDE лучше, светлая или темная?: https://stitcher.io/blog/why-light-themes-are-better-according-to-science

[41] Анализ использований оператора подавления ошибок: https://www.exakat.io/en/i-scream-you-scream-we-all-scream-for/

[42] Как статические методы убивают тебя хуже, чем коронавирус: https://tomasvotruba.com/blog/2020/08/31/how-static-methods-kills-you-like-corona/

[43] .gitattributes для PHP-проектов: https://php.watch/articles/composer-gitattributes

[44] Почему не PHP?: https://mattbrown.dev/articles/why-not-php

[45] «Почему не Rust»: https://matklad.github.io/2020/09/20/why-not-rust.html

[46] Валидация в PHP. Красота или лапша?: https://habr.com/ru/post/521292/

[47] Собеседование php-developer в 2020: https://habr.com/ru/post/520472/

[48] Профилирование PHP-приложений с помощью Xdebug: https://www.youtube.com/watch?v=mNc_tcomrVs

[49] Туториал по работе: https://www.youtube.com/watch?v=_Uk95vG3ezQ

[50] rectorphp/rector: https://github.com/rectorphp/rector

[51] Подкаст Между скобок № 11: https://soundcloud.com/between-braces/11-valentin-udaltsov-staticheskiy-analiz

[52] Пых: https://t.me/phpyh

[53] Рефакторинг в стиле ниндзя и другие приемчики: https://www.youtube.com/watch?v=ucO7229o8Ew

[54] Компиляция и тест-драйв PHP 8: https://www.youtube.com/watch?v=tN4qs_FPkWQ

[55] pic.twitter.com/Sx3V57jBje: https://t.co/Sx3V57jBje

[56] September 22, 2020: https://twitter.com/levelsio/status/1308196984138981376?ref_src=twsrc%5Etfw

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

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

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

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

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

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

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

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