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

PHP-Дайджест № 162 (1 – 12 августа 2019)

PHP-Дайджест № 162 (1 – 12 августа 2019) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое.

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

PHP-Дайджест № 162 (1 – 12 августа 2019) - 2 Новости и релизы

PHP-Дайджест № 162 (1 – 12 августа 2019) - 4 PHP Internals

  • P++ [13] — Споры и обвинения в PHP Internals по мотивам удаления коротких тэгов [14] <?, явной передаче параметров по ссылке [15] и других обсуждений в конце концов вылились неожиданное предложение от Зеева Сураски – сделать новый диалект PHP. Рабочее название P++ тут неспроста – Зеев предлагает сделать «сестринский» язык, как C++ для C. При этом предполагается, что и PHP и P++ будут развиваться одновременно в рамках одного рантайма.

    В новом P++ можно будет реализовать массу революционных улучшений, очистить от легаси, и навести порядок не думая об обратной совместимости. Также поскольку язык будет иметь новое название, то и от шлейфа плохой репутации можно будет отделаться. A классический PHP при этом будет получать все плюшки типа JIT, предзагрузки, и т. п., но сохранять обратную совместимость.

    Предложение ожидаемо встретило массу контраргументов и Зеев даже попытался ответить на них создав P++ idea: FAQ [16]. Тем не менее, вопросов множество: ограниченные ресурсы (всего ~2 человека фултайм работащих над PHP), фрагментация сообщества, опыт Hack, как реально будет сосуществовать и взаимодействовать код PHP и P++, и масса [13] других [17].

  • [RFC] Namespace-scoped declares, again [18] — В рамках RFC Никита Попов предлагает более эволюционный подход по дальнейшему развитию языка. А именно, использование опциональных директив по типу strict_types.
    Причём тут есть два возможных пути реализации: мелкозернистый – по директиве на каждую фичу; и крупнозернистый – когда целая пачка фич объединяется в одну директиву обозначающую редакцию или стандарт языка, например «PHP2020». По аналогии с Editions из Rust.
  • Call for participation: Annotating internal function argument and return types [19] — Хотите стать контрибьютором ядра PHP? Более подходящего момента для старта не придумаешь!
    Недостаточная информация о внутренних функциях в Reflection – довольно старая проблема. К счастью, в PHP 8 уже всё готово для того, чтобы сделать поддержку типов для аргументов и возвращаемых значений встроенных функций. Собственно, осталось только добавить соответствующие аннотации и для этого нет необходимости быть экспертом в С. Никита сделал PR с примером, чтоб показать процесс: https://github.com/php/php-src/pull/4499 [20] Ну а дальше – помощь приветствуется!

PHP-Дайджест № 162 (1 – 12 августа 2019) - 5 Инструменты

  • nunomaduro/pest [21] — Синтаксический сахар для PHPUnit, чтобы писать тесты в стиле facebook/jest [22].
  • php-vcr/phpunit-testlistener-vcr [23] — Записывает HTTP-ответы в ваших тестах и затем «проигрывает» их во время последующих запусков тестов, тем самым ускоряя запуски и детерминируя результат. Пример использования [24].
  • mpratt/Embera [25] — Библиотека для удобного получения метаинформации о страницах по URL (oembed, opengraph, twitter-cards, изображения, код для встривания и прочее).
  • NxtLvLSoftware/php-static-constructors [26] — Статические конструкторы а-ля C# [27] – исполняются максимум один раз. Реализованы через специальный автозагрузчик.
  • DaveLiddament/sarb [28] — Реализовывает Baseline для инструментов статического анализа, позволяя внедрять использование в легаси-приложениях.

PHP-Дайджест № 162 (1 – 12 августа 2019) - 6 Symfony

PHP-Дайджест № 162 (1 – 12 августа 2019) - 8 Laravel

PHP-Дайджест № 162 (1 – 12 августа 2019) - 14 Yii

Async PHP

PHP-Дайджест № 162 (1 – 12 августа 2019) - 17 Материалы для обучения

PHP-Дайджест № 162 (1 – 12 августа 2019) - 23 Аудио/Видео

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

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

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

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

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

Источник [71]


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

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

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

[1] PSR-12 Extended Coding Style Guide: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md

[2] Изменения по сравнению с PSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide-meta.md#5-changelog-from-psr-2

[3] PHP 7.4.0 beta 2: https://www.php.net/archive/2019.php#2019-08-08-1

[4] ожидается: https://wiki.php.net/todo/php73#timetable

[5] UPGRADING: https://github.com/php/php-src/blob/php-7.4.0beta2/UPGRADING

[6] список изменений во внутреннем API: https://github.com/php/php-src/blob/php-7.4.0beta2/UPGRADING.INTERNALS

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

[8] 7.2.21: https://www.php.net/ChangeLog-7.php#7.2.21

[9] 7.1.31: https://www.php.net/ChangeLog-7.php#7.1.31

[10] Slim 4.0.0: http://www.slimframework.com/2019/08/01/slim-4.0.0-release.html

[11] Composer 1.9.0: https://github.com/composer/composer/releases/tag/1.9.0

[12] Завершающий летний сезон митап PHPofBy #29: https://habr.com/ru/news/t/462633/

[13] P++: https://externals.io/message/106453

[14] удаления коротких тэгов: https://externals.io/message/106384

[15] явной передаче параметров по ссылке: https://externals.io/message/101254

[16] P++ idea: FAQ: https://wiki.php.net/pplusplus/faq

[17] других: https://externals.io/message/106503

[18] [RFC] Namespace-scoped declares, again: https://externals.io/message/101323#106345

[19] Call for participation: Annotating internal function argument and return types: https://externals.io/message/106522

[20] https://github.com/php/php-src/pull/4499: https://github.com/php/php-src/pull/4499

[21] nunomaduro/pest: https://github.com/nunomaduro/pest

[22] facebook/jest: https://github.com/facebook/jest

[23] php-vcr/phpunit-testlistener-vcr: https://github.com/php-vcr/phpunit-testlistener-vcr

[24] Пример использования: https://engineering.carsguide.com.au/php-vcr-a-easy-way-to-mock-external-api-calls-732f1aad8f34

[25] mpratt/Embera: https://github.com/mpratt/Embera

[26] NxtLvLSoftware/php-static-constructors: https://github.com/NxtLvLSoftware/php-static-constructors

[27] а-ля C#: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

[28] DaveLiddament/sarb: https://github.com/DaveLiddament/sarb

[29] будут поддерживаться в течение 8 месяцев: https://symfony.com/blog/symfony-maintenance-changes-for-standard-releases

[30] Неделя Symfony #658 (5-11 August 2019): https://symfony.com/blog/a-week-of-symfony-658-5-11-august-2019

[31] Domain Events d Symfony-приложении: https://romaricdrigon.github.io/2019/08/09/domain-events

[32] Deploy Symfony + React приложения на AWS посредством CI: https://habr.com/ru/post/462415/

[33] ylsideas/feature-flags: https://github.com/ylsideas/feature-flags

[34] флагов фич: http://featureflags.io/

[35] gjrdiesel/laravel-cloud: https://github.com/gjrdiesel/laravel-cloud

[36] Пятиминутка PHP № 58: https://5minphp.ru/episode58/

[37] История одного бага в Laravel Shift: https://jasonmccreary.me/articles/laravel-shifty-bits/

[38] Сервис-локатор – антипаттерн: https://stitcher.io/blog/service-locator-anti-pattern

[39] Пачка советов по работе с Laravel (Laracon 2019): https://www.youtube.com/watch?v=FxACh4X-Xc0

[40] Сервис-контейнер: 4 способа управления зависимостями: https://laravel.demiart.ru/4-ways-service-container-managing-dependencies/

[41] Порождение событий, CQRS и Laravel: https://habr.com/ru/company/otus/blog/461899/

[42] Docker + Laravel + RoadRunner = <3: https://habr.com/ru/post/461687/

[43] Организация Detail View в Yii2: https://antonshell.me/post/yii2-detail-view

[44] Минификация и разделение на модули ассетов в Yii2: http://2amigos.us/blog/minifying-and-modularizing-assets-in-yii2

[45] Валидация запроса: https://www.youtube.com/watch?v=aIzTB8VNyco

[46] Управление продуктами: https://www.youtube.com/watch?v=HsHIgkItiGI

[47] phpinnacle/buffer: https://github.com/phpinnacle/buffer

[48] Как мы добавили тысячи аннотаций @var за день: https://www.tomasvotruba.cz/blog/2019/07/29/how-we-completed-thousands-of-missing-var-annotations-in-a-day/

[49] Тернарный оператор в PHP: https://medium.com/@frontman/%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80-%D0%B2-php-2d912b7712b8

[50] Три года автотестов: как повысить скорость и не только: https://habr.com/ru/company/skyeng/blog/461901/

[51] Разработка гибридных PHP/Go приложений с использованием RoadRunner: https://habr.com/ru/company/oleg-bunin/blog/461827/

[52] Мутационное тестирование в PHP: качественное измерение для code coverage: https://habr.com/ru/company/badoo/blog/462709/

[53] Предварительная загрузка в PHP 7.4: https://habr.com/ru/company/otus/blog/463117/

[54] старого трюка: http://ocramius.github.io/blog/accessing-private-php-class-members-without-reflection/

[55] $this: https://twitter.com/search?q=%24this&src=ctag&ref_src=twsrc%5Etfw

[56] https://t.co/TDnaLZAMB6: https://t.co/TDnaLZAMB6

[57] August 7, 2019: https://twitter.com/mindplaydk/status/1158995315124559872?ref_src=twsrc%5Etfw

[58] PHP Internals News #22: https://phpinternals.news/22

[59] Matteo Beccati: https://twitter.com/mbeccati

[60] That Podcast Episode 63: https://thatpodcast.io/episodes/episode-63-the-one-where-we-talk-with-benjamin-eberlei-about-tideways

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

[62] Пятиминутка PHP № 59: DDD #1 — Domain Model: https://5minphp.ru/episode59/

[63] Пятиминутка PHP № 60: Тестирование в Vimbox (SkyEng): https://5minphp.ru/episode60/

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

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

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

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

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

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

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

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