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

PHP-Дайджест № 187 (18 августа – 7 сентября 2020)

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 beta 3, принят новый синтаксис атрибутов в PHP 8, Zephir всё, целая пачка полезных инструментов, статьи, видео, подкасты.

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

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 2 Новости и релизы

  • PHP 8 beta 3 [1] — Последняя бета в цикле. Следующим релизом станет RC 1, который ожидается 17 сентября.
  • PHP 7.4.10 [2], PHP 7.3.22 [3]
  • Будущее Zephir и Phalcon [4] — Один из контрибьюторов языка Zephir и PHP-фреймворка Phalcon ушёл из проекта, поэтому активная разработка Zephir приостановлена, а Phalcon 5 планируется переписать на чистый PHP.
  • В WordPress сообществе обсуждается план по поддержке версий PHP [5]. Судя по ответам [6] лидера проекта Matt Mullenweg, PHP 5.6 будет поддерживаться еще долго. По официальной статистике [7] PHP ≤5.6 используется на 21.6% установок WP.

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 3 PHP Internals

  • check [RFC] Shorter Attribute Syntax Change [8] — Наконец-то закончилась эпопея с синтаксисом для атрибутов. На переголосовании принят вариант #[Attribute].
    #[
      ORMEntity,
      ORMTable("user")
    ]
    class User
    {
        #[ORMId, ORMColumn("integer"), ORMGeneratedValue]
        private $id;
    
        #[ORMColumn("string", ORMColumn::UNIQUE)]
        #[AssertEmail(["message" => "The email '{{ value }}' is not a valid email."])]
        private $email;
    }
    

    Кстати, предыдущий синтаксис с @@Attr не поддерживал группировку атрибутов и поэтому такая возможность была убрана из PR. Но поскольку у #[ ] есть маркер конца, то группировку он поддерживает и она была возвращена.

    // Можно и так
    #[ORMEntity]
    #[ORMTable("user")]
    
    // и так
    #[
        ORMEntity,
        ORMTable("user")
    ]

    Подробнее об атрибутах было в посте [9].

  • new [RFC] any() and all() on iterables [10] — Предлагается добавить две новых функции в стандартную библиотеку:
    any(iterable $input, ?callable $callback = null): bool — запустит колбек на каждом элементе и остановится, на первом, который вернет true.
    all(...) — вернет true только, если колбек вернет true для каждого элемента.

    Пример использования:

    // Было
    $satisifes_predicate = false;
    foreach ($item_list as $item) {
        if (API::satisfiesCondition($item)) {
            $satisfies_predicate = true;
            break;
        }
    }
    if (!$satisfies_predicate) {
        throw new APIException("No matches found");
    }
    
    // Стало
    if (!any($item_list, fn($item) => API::satisfiesCondition($item))) {
        throw new APIException("No matches found");
    }

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 6 Инструменты

  • Pest 0.3 [11] — Обертка над PHPUnit, которая позволяет писать тесты в более простом виде. Также готов плагин для PhpStorm Pest IntelliJ [12].
  • Codeception/Verify 2.0 [13] — Ассершены для PHPUnit и Codeception с fluent-интерфейсом.
  • ramsey/composer-repl [14] — Добавляет команду composer repl для запуска bobthecow/psysh [15].
  • brick/money [16] — Библиотека для работы с денежными данными. Работает, даже если не уставлены GMP или BCMath. Сравнение с moneyphp/money [17].
  • bassim/super-expressive-php [18] — Библиотека позволяет описывать регулярные выражения почти-естественным языком через текучий интерфейс. Альтернатива VerbalExpressions/PHPVerbalExpressions [19].
  • phpsci/phpsci-carray [20] — Расширение PHP для научных вычислений. Основано на NumPy.
  • github.com/phpwebclient [21] — Декораторы и хелперы для PSR-18 совместимых HTTP-клиентов.
  • hamlet-framework/type [22] — Библиотека для спецификации типов. Может быть использована везде, где нужна спецификация типов, включая cast, assert, instanceof и т. п.

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 7 Symfony

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 9 Laravel

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 14 Yii

  • yiisoft/auth [33] — Свежий пакет из семейства Yii 3 предоставляет различные методы аутентификации, набор абстракций для реализации в приложении, и PSR-15 middleware для аутентификации.
  • yiisoft/strings [34] — Хелперы для работы со строками.

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 15 Async PHP

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 17 Материалы для обучения

PHP-Дайджест № 187 (18 августа – 7 сентября 2020) - 25 Аудио/Видео


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

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

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

Прислать ссылку [66]
Поиск ссылок по всем дайджестам [67]
Предыдущий выпуск: PHP-Дайджест № 186 [68]

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

Источник [69]


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

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

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

[1] PHP 8 beta 3: https://www.php.net/archive/2020.php#2020-09-03-3

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

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

[4] Будущее Zephir и Phalcon: https://blog.phalcon.io/post/the-future-of-phalcon

[5] план по поддержке версий PHP: https://make.wordpress.org/core/2020/08/24/proposal-dropping-support-for-old-php-versions-via-a-fixed-schedule/

[6] ответам: https://make.wordpress.org/core/2020/08/24/proposal-dropping-support-for-old-php-versions-via-a-fixed-schedule/#comment-39736

[7] официальной статистике: https://wordpress.org/about/stats/#php_versions

[8] [RFC] Shorter Attribute Syntax Change: https://wiki.php.net/rfc/shorter_attribute_syntax_change#voting

[9] в посте: https://stitcher.io/blog/attributes-in-php-8

[10] [RFC] any() and all() on iterables: https://wiki.php.net/rfc/any_all_on_iterable

[11] Pest 0.3: https://nunomaduro.com/pest-v0-3-is-out/

[12] Pest IntelliJ: https://nybroe.dev/pest-phpstorm-plugin-v0.30/

[13] Codeception/Verify 2.0: https://github.com/Codeception/Verify

[14] ramsey/composer-repl: https://github.com/ramsey/composer-repl

[15] bobthecow/psysh: https://github.com/bobthecow/psysh

[16] brick/money: https://github.com/brick/money

[17] Сравнение с moneyphp/money: https://github.com/brick/money/issues/28#issuecomment-678708771

[18] bassim/super-expressive-php: https://github.com/bassim/super-expressive-php

[19] VerbalExpressions/PHPVerbalExpressions: https://github.com/VerbalExpressions/PHPVerbalExpressions

[20] phpsci/phpsci-carray: https://github.com/phpsci/phpsci-carray

[21] github.com/phpwebclient: https://github.com/phpwebclient

[22] hamlet-framework/type: https://github.com/hamlet-framework/type

[23] Книга «Symfony 5: Быстрый старт» доступна онлайн на русском: https://symfony.com/doc/current/the-fast-track/ru/index.html

[24] Неделя Symfony #714 (31 августа — 6 сентября 2020): https://symfony.com/blog/a-week-of-symfony-714-31-august-6-september-2020

[25] laravel-orion/laravel-orion: https://github.com/laravel-orion/laravel-orion

[26] @alexzarbn: https://twitter.com/alexzarbn

[27] Statamic 3: https://github.com/statamic/statamic

[28] Типичные ошибки в безопасности в Laravel-приложениях: https://cyberpanda.la/ebooks/download/laravel-security?pdf=true

[29] Legacy и Laravel: Переписываем устаревшее приложение на современный фреймворк: https://laravel.demiart.ru/converting-legacy-to-laravel/

[30] Laravel 8 — Что нового?: https://laravel.demiart.ru/laravel-8-whats-new/

[31] Laravel–Дайджест (24 августа – 6 сентября 2020): https://habr.com/ru/post/517980/

[32] Laravel Worldwide Meetup #2: Neo Ighodaro and Michael Dyrynda: https://www.youtube.com/watch?v=4WZHRtgMAWo

[33] yiisoft/auth: https://github.com/yiisoft/auth

[34] yiisoft/strings: https://github.com/yiisoft/strings

[35] Пишем простую ORM с возможностью смены БД на лету: https://habr.com/ru/post/515068/

[36] Архитектура PHP-приложений вдохновленная «чистой архитекторой»: https://medium.com/engenharia-arquivei/a-decoupled-php-architecture-inspired-by-the-clean-architecture-788b30ab52c2

[37] Диалекты в коде: Часть 1: https://www.rosstuck.com/dialects-in-code-part-1

[38] Как работает unserialize() в PHP: https://vkili.github.io/blog/insecure%20deserialization/unserialize/

[39] Подключаем статический анализ (psalm) в проекте: https://www.jamestitcumb.com/posts/quality-get-started-with-static-analysis-now

[40] Ускоряем PHP при помощи FFI: https://dev.to/jorgecc/speeding-php-with-ffi-5gn0

[41] Настраиваем Xdebug + Docker + PhpStorm: https://jump24.co.uk/journal/turbocharged-php-development-with-xdebug-docker-and-phpstorm/

[42] Anna Filina: https://twitter.com/afilina/status/1288126813303001094

[43] pic.twitter.com/cvVUKsNQAo: https://t.co/cvVUKsNQAo

[44] July 28, 2020: https://twitter.com/afilina/status/1288126813303001094?ref_src=twsrc%5Etfw

[45] Xdebug через Windows Subsystem For Linux 2 (WSL2): https://habr.com/ru/post/516254/

[46] Модернизация старого PHP-приложения: https://habr.com/ru/company/mailru/blog/515778/

[47] Мёртвый код: найти и обезвредить: https://habr.com/ru/company/badoo/blog/515472/

[48] Перечисления в PHP: https://habr.com/ru/post/517752/

[49] Ты решил написать свой фреймворк. Стоило оно того?: https://habr.com/ru/company/skyeng/blog/516950/

[50] подкаста Между скобок с Александром Лисаченко: https://soundcloud.com/between-braces/9-aleksandr-lisachenko-aop-v-php

[51] Как Lingualeo переехал на PostgreSQL с 23 млн юзеров: https://habr.com/ru/company/lingualeo/blog/515530/

[52] Вред хранимых процедур: https://habr.com/ru/company/ruvds/blog/517302/

[53] 20_20 — год, в котором подчеркивание в числовых литералах победило: https://habr.com/ru/post/516984/

[54] Доклад Tobias Nyholm : https://www.youtube.com/watch?v=k8VdT99jY5k

[55] async-aws/aws: https://github.com/async-aws/aws

[56] ХудоБедно на тему работы в IT: https://www.youtube.com/watch?v=Eyql6XDvvSQ

[57] PHP Internals News #67: https://phpinternals.news/67

[58] Дерик Xdebug: https://twitter.com/derickr

[59] в посте: https://lwn.net/SubscriberLink/830206/2eaa67bfc56d2232/

[60] pic.twitter.com/7v3UAWM8gI: https://t.co/7v3UAWM8gI

[61] September 1, 2020: https://twitter.com/CamAsMetaphor/status/1300893022146703360?ref_src=twsrc%5Etfw

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

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

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

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

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

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

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

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