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

PHP-Дайджест № 175 (25 февраля – 10 марта 2020)

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: релизы Laravel 7 и CodeIgniter 4, атрибуты v2 и другие RFC-предложения из PHP Internals, порция полезных инструментов, видео, подкасты и многое другое.

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

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 2 Новости и релизы

  • CodeIgniter 4.0 [1] — Спустя 5 лет разработки вышла новая версия фреймворка. Переписан с нуля, но всё так же в виде единого пакета. Работает на PHP 7.2+, реализованы PSR-1,3,4.
  • Ближайшие мероприятия:
    • Ярославль, 12 марта: BeerPHP [2]
    • Воронеж, 16 марта: 2-й PHP-митап городского чата [3]
    • Екатеринбург, 26 марта: 3-й PHP-митап [4]
    • Казань, 28 марта: 2-й PHP-митап [5]
    skyeng/php-communities [6] — Открытый список PHP-событий, спикеров и организаторов.

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 3 PHP Internals

  • [RFC] Attributes v2 [7] — Вторая попытка добавить полноценные аннотации в PHP с синтаксисом двойных угловых скобок <<...>>. Готов черновик реализации [8]. Ранее уже были предложения о простых аннотациях [9] и атрибутах [10], последнее предложение как раз не прошло голосование.
    Скрытый текст

    use DoctrineORMMapping as ORM;
    
    <<ORMEntity(["repositoryClass" => UserRepository::class])>>
    <<ORMTable("users")>>
    class User
    {
        <<ORMId, ORMColumn, ORMGeneratedValue>>
        public int $id;
    
        <<ORMColumn(["unique" => true])>>
        public string $email;
    
        <<ORMManyToOne()>>
        public ?Address $address;
    }
    
  • [RFC] Increment/Decrement Fixes [11] — Операторы инкремента и декремента в некоторых случаях ведут себя не так же, как явное прибавление/вычитание единицы с присвоением. Например:
    Скрытый текст

        <?php
    
        $a = [];
        $a = ++$a; // [] and no errors
        $a = $a + 1; // Fatal error
        

    В PHP 8 предлагается исправить эти и другие несоответствия и бросать TypeError где необходимо.

  • [RFC] Stringable [12] — Предложение от Nicolas Grekas принято. В PHP 8 можно будет использовать union-тип string|Stringable там, где ожидается строка, и передавать классы с __toString(). При этом интерфейс явно добавлять не нужно [13].
  • [PR] Make sorting stable [14] — Стандартные функции сортировки в PHP не являются стабильными. Это значит, что оригинальный порядок элементов с одинаковыми значениями не гарантируется (пример [15]). Предлагается это исправить и сделать сортировки стабильными. Правда, при большом количестве одинаковых элементов такой фикс отразится на производительности.

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 4 Инструменты

  • shivammathur/setup-php [16] — GitHub action для добавления в свой воркфлоу, который подготовит среду PHP для дальнейших шагов.
  • minicli/minicli [17] — Пакет для создания консольных утилит. Серия постов [18] в поддержку.
  • cebe/php-openapi [19] — Инструмент читает OpenAPI файлы с описанием сервисов в удобные для работы объекты PHP.

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 5 Symfony

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 7 Laravel

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 17 Yii

  • yiisoft/friendly-exception [39] — Релиз первого пакета из Yii 3. Интерфейс для описания человекопонятных исключений сразу с возможным решением.

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 18 Laminas

Async PHP

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 19 Материалы для обучения

PHP-Дайджест № 175 (25 февраля – 10 марта 2020) - 25 Аудио/Видео

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

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

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

Прислать ссылку [75]
Поиск ссылок по всем дайджестам [76]
Предыдущий выпуск: PHP-Дайджест № 174 [77]

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

Источник [78]


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

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

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

[1] CodeIgniter 4.0: https://github.com/codeigniter4/CodeIgniter4

[2] BeerPHP: https://t.me/beerphp_yaroslavl

[3] 2-й PHP-митап городского чата: https://t.me/php_vrn/1298

[4] 3-й PHP-митап: https://scienceman.timepad.ru/event/1263936/

[5] 2-й PHP-митап: https://php-not-dead.timepad.ru/event/1253335/

[6] skyeng/php-communities: https://github.com/skyeng/php-communities

[7] [RFC] Attributes v2: https://wiki.php.net/rfc/attributes_v2

[8] черновик реализации: https://github.com/beberlei/php-src/pull/2

[9] простых аннотациях: https://wiki.php.net/rfc/simple-annotations

[10] атрибутах: https://wiki.php.net/rfc/attributes

[11] [RFC] Increment/Decrement Fixes: https://wiki.php.net/rfc/increment_decrement_fixes

[12] [RFC] Stringable: https://wiki.php.net/rfc/stringable

[13] не нужно: https://t.me/phpdigest/125

[14] [PR] Make sorting stable: https://github.com/php/php-src/pull/5236

[15] пример: https://3v4l.org/bpvq1

[16] shivammathur/setup-php: https://github.com/shivammathur/setup-php

[17] minicli/minicli: https://github.com/minicli/minicli

[18] Серия постов: https://dev.to/erikaheidi/introducing-minicli-a-microframework-for-cli-centric-php-applications-44ik

[19] cebe/php-openapi: https://github.com/cebe/php-openapi

[20] туториалов по разработке на Symfony 5: https://symfonycasts.com/screencast/symfony

[21] Автоматическая настройка Doctrine-репозиториев как сервисов: https://www.strangebuzz.com/en/blog/auto-configuration-of-doctrine-repositories-as-services

[22] Неделя Symfony #688 (2-8 марта 2020): https://symfony.com/blog/a-week-of-symfony-688-2-8-march-2020

[23] Laravel 7: https://laravel.com/docs/7.x/releases

[24] laravel/airlock: https://github.com/laravel/airlock

[25] Туториал: https://laravel.demiart.ru/custom-casts/

[26] kitetail/zttp: https://github.com/kitetail/zttp

[27] другие изменения: https://laravel.demiart.ru/laravel-7-whats-new/

[28] на Laracasts: https://laracasts.com/series/whats-new-in-laravel-7

[29] Coder's Tape: https://www.youtube.com/playlist?list=PLpzy7FIRqpGCl26FcHazZmIUwT7zFJu7U

[30] livewire v1.0: https://github.com/livewire/livewire

[31] Видеотуториал: https://www.youtube.com/watch?v=Qljh8w5YX44

[32] nunomaduro/laravel-mojito: https://github.com/nunomaduro/laravel-mojito

[33] Демо использования: https://www.codecaptain.io/blog/web-development/testing-views-in-isolation-with-laravel-mojito/685

[34] Оптимизация циклических отношений в Laravel: https://reinink.ca/articles/optimizing-circular-relationships-in-laravel

[35] Laravel Snippet #23: https://blog.laravel.com/laravel-snippet-23-laravel-7x-forge-vapor-speaking-vs-silence

[36] Видео с Laracon Australia 2019: https://www.youtube.com/playlist?list=PLEkJYA4gJb78lIOKjZ0tJ9rWszT6uCTJH

[37] Принцип Единой Ответственности (SRP): https://habr.com/ru/post/489174/

[38] Laravel+Docker+Gitlab. С чего начать: https://habr.com/ru/post/491532/

[39] yiisoft/friendly-exception: https://github.com/yiisoft/friendly-exception

[40] Технического руководящего комитета проекта Laminas: https://getlaminas.org/blog/2020-03-05-tsc-inaugural-meeting.html

[41] протокола: https://github.com/laminas/technical-steering-committee/blob/master/meetings/minutes/2020-03-02-TSC-Minutes.md

[42] driftphp/reactphp-dbal: https://github.com/driftphp/reactphp-dbal

[43] Как устроен JIT в PHP 8: https://thephp.website/en/issue/php-8-jit/

[44] Подборка хороших практик программирования на PHP: https://beberlei.de/2020/02/25/clean_code_object_calisthenics_rules_i_try_to_follow.html

[45] Benjamin Eberlei: https://twitter.com/beberlei

[46] Как я нашёл: https://www.miguelxpn.com/coding/php/opensource/2020/03/01/how-i-found-and-fixed-a-bug-in-php-std-lib.html

[47] исправил: https://github.com/php/php-src/pull/5201

[48] баг: https://bugs.php.net/bug.php?id=79265

[49] Использование RabbitMQ вместе с MonsterMQ: https://habr.com/ru/post/488850/

[50] 2: https://habr.com/ru/post/489022/

[51] 3: https://habr.com/ru/post/489692/

[52] 4: https://habr.com/ru/post/490194/

[53] 5: https://habr.com/ru/post/490678/

[54] Маппинг данных из реляционной БД: https://habr.com/ru/post/490550/

[55] Избавляемся от рутины со своим плагином для PhpStorm: https://habr.com/ru/company/badoo/blog/490024/

[56] Как написать хороший README: https://flower.codes/writing-a-damn-good-readme-file/

[57] Андрея Ситника: https://twitter.com/andrey_sitnik

[58] как продвигать open-source проекты: https://www.youtube.com/watch?v=DU0LiH61PnQ

[59] Видео с RND PHP #2 (Ростов-на-Дону): https://youtu.be/2TBrGX1-mJY?t=1618

[60] Видео с PHP-митапа в Йошкар-Оле: https://www.youtube.com/playlist?list=PL29DYZAQWb0JKrUgONzLLhzy3EEh6s-zy

[61] Подкаст The Undercover ElePHPant #9: https://undercover-elephpant.com/episodes/talking-background-processes-and-workers-in-php-with-samuel-roze

[62] Samuel Rose: https://twitter.com/samuelroze

[63] Пять проблем надёжного запуска фоновых процессов на PHP: https://tideways.com/profiler/blog/five-challenges-for-running-reliable-php-background-processes

[64] Подкаст Voices of the ElePHPant: https://voicesoftheelephpant.com/2020/02/26/interview-with-sara-golemon-derick-rethans/

[65] PHP Internals News podcast #43: https://phpinternals.news/43

[66] трейтов: https://wiki.php.net/rfc/abstract_trait_method_validation

[67] лексера: https://wiki.php.net/rfc/token_as_object

[68] PHP Internals News podcast #42: https://phpinternals.news/42

[69] Jan Böhmer: https://github.com/jbtronics

[70] перегрузке операторов: https://wiki.php.net/rfc/userspace_operator_overloading

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

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

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

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

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

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

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

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