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

PHP-Дайджест № 168 (5 – 25 ноября 2019)

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4 RC6, Symfony 5.0 и 4.4, WordPress 5.3 и другие релизы, об обновлении PSR-стандартов, RFC предложения из PHP Internals, порция полезных инструментов, митапы, видеозаписи, подкасты и многое другое.

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

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 2 Новости и релизы

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 5 PHP Internals

  • [RFC] Weak maps [20] — В PHP 7.4 была добавлена поддержка слабых ссылок [21] через специальный класс WeakReference [22]. Но в действительности для приложений нужна коллекция WeakMap, которую нельзя реализовать на основе WeakReference. Собственно, её и предлагается добавить.
    Скрытый текст

    $map = new WeakMap();
    $obj = new stdClass();
    $map[$obj] = 42;
    var_dump($map);
    // object(WeakMap)#1 (1) {
    //   [0]=>
    //     ["key"] => object(stdClass)#2 (0) {}
    //     ["value"] => int(42)
    //   }
    // }
    
    // Объект уничтожается здесь,
    // и ключ автоматически удаляется из WeakMap
    unset($obj);
    var_dump($map);
    // object(WeakMap)#1 (0) {
    // }
    
  • [RFC] Implement new DOM Living Standard APIs in ext/dom [23] — Предложение о реализации поддержки нового стандарта DOM в расширении ядра почти принято единогласно.
  • [RFC] Deprecate Backtick Operator (V2) [24] — Отклонено на голосовании.
  • [RFC] Union Types 2.0 [25] — Предложение принято практически единогласно и в PHP 8.0 нас ждут объединённые типы. Синтаксис T1|T2|... можно будет использовать везде, где типы можно указывать сейчас.
  • audio PHP Internals News podcast #36 [26] — О тех RFC, которые не прошли в PHP 7.4.

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 7 Инструменты

  • lisachenko/z-engine [27] — Экспериментальная библиотека, которая позволяет используя FFI [28] получить доступ к внутренним структурам самого PHP, таким как zend_class_entry, zval, и подобным, и изменять их в рантайме. Это позволяет делать самые немыслимые манипуляции в рантайме.
  • nette/safe-stream [29] — Библиотека позволяет производить атомарные и безопасные чтение/запись файлов с помощью стандартных функций PHP.
  • krakjoe/ilimit [30] — Расширение позволяет выполнить функцию наложив при этом ограничения на время и память, которые может потребовать вызов.
  • Twig 3.0 [31]Под капотом [32] много мелких улучшений, повышена производительность, почищен код.
  • fzaninotto/Faker 1.9 [33] — Более сотни улучшений и исправлений в свежем обновлении инструмента для генерации тестовых данных.
  • cekta/di [34] — Годная реализация PSR-11.
  • tarantool-php/client [35] — PHP-клиент для Tarantool. Бенчмарки PHP синхронных коннекторов для Tarantool [36] запущенных в асинхронном/параллельном режиме с помощью расширений Swoole, Async и Parallel (и их комбинаций). Прислал rybakit [37].
  • badoo/jira-client [38]habr Badoo Jira API Client: магия в Jira на PHP [39].

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 9 Symfony

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 10 Laravel

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 15 Yii

Async PHP

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 18 Материалы для обучения

PHP-Дайджест № 168 (5 – 25 ноября 2019) - 23 Аудио/Видео

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

Источник [91]


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

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

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

[1] PHP 7.4.0 RC6: https://www.php.net/archive/2019.php#2019-11-14-1

[2] что нового в PHP 7.4: https://www.phparch.com/2019/11/the-workshop-whats-new-in-php-7-4/

[3] Стрелочные функции в PHP 7.4: https://habr.com/ru/post/476242/

[4] Введение в PHP FFI: https://dev.to/verkkokauppacom/introduction-to-php-ffi-po3

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

[6] в течение года: https://www.php.net/supported-versions.php

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

[8] Обновление стандартов PSR: https://github.com/php-fig/fig-standards/pull/1195/files?short_path=ef021a0#diff-ef021a0820876c95b7b6ec1d4007fe75

[9] голосование: https://groups.google.com/forum/#!topic/php-fig/F2-kYPW8UDk/discussion

[10] о причинах и рассмотренных альтернативных подходах: https://www.php-fig.org/blog/2019/10/upgrading-psr-interfaces/

[11] WordPress 5.3: https://wordpress.org/news/2019/11/kirk/

[12] Guttenberg: https://wordpress.org/gutenberg/

[13] VanOns/laraberg: https://github.com/VanOns/laraberg

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

[15] Встреча PHP-разработчиков Уфы: https://habr.com/ru/company/skyeng/blog/476488/

[16] PHP: Неправильный путь: https://events.involta.ru/events/show/14

[17] PHP Meetup December: https://php-yola.timepad.ru/event/1110295/

[18] PHP OpenSource world. Stable multi-threaded application.: https://www.facebook.com/events/415274049185554

[19] Большая встреча PHP-разработчиков: https://leader-id.ru/event/29485/

[20] [RFC] Weak maps: https://wiki.php.net/rfc/weak_maps

[21] слабых ссылок: https://wiki.php.net/rfc/weakrefs

[22] WeakReference: https://www.php.net/manual/en/class.weakreference.php

[23] [RFC] Implement new DOM Living Standard APIs in ext/dom: https://wiki.php.net/rfc/dom_living_standard_api

[24] [RFC] Deprecate Backtick Operator (V2): https://wiki.php.net/rfc/deprecate-backtick-operator-v2

[25] [RFC] Union Types 2.0: https://wiki.php.net/rfc/union_types_v2

[26] PHP Internals News podcast #36: https://phpinternals.news/36

[27] lisachenko/z-engine: https://github.com/lisachenko/z-engine

[28] FFI: https://wiki.php.net/rfc/ffi

[29] nette/safe-stream: https://github.com/nette/safe-stream

[30] krakjoe/ilimit: https://github.com/krakjoe/ilimit

[31] Twig 3.0: https://github.com/twigphp/Twig

[32] Под капотом: https://symfony.com/blog/preparing-your-applications-for-twig-3

[33] fzaninotto/Faker 1.9: https://github.com/fzaninotto/Faker/releases/tag/v1.9.0

[34] cekta/di: https://github.com/cekta/di

[35] tarantool-php/client: https://github.com/tarantool-php/client

[36] Бенчмарки PHP синхронных коннекторов для Tarantool: https://github.com/tarantool-php/benchmarks

[37] rybakit: https://github.com/rybakit

[38] badoo/jira-client: https://github.com/badoo/jira-client

[39] Badoo Jira API Client: магия в Jira на PHP: https://habr.com/ru/company/badoo/blog/475840/

[40] Symfony 4.4: https://symfony.com/blog/symfony-4-4-0-released

[41] блог постах: https://symfony.com/blog/category/living-on-the-edge/5.0-4.4

[42] полном списке изменений: https://symfony.com/blog/symfony-4-4-curated-new-features

[43] Symfony 5.0: https://symfony.com/blog/symfony-5-0-0-released

[44] symfony/string: https://github.com/symfony/string

[45] symfony/notifier: https://github.com/symfony/notifier

[46] Fabien Potencier представляет компонент Notifier: https://symfonycasts.com/screencast/london2019/keynote

[47] thomasjohnkane/snooze: https://github.com/thomasjohnkane/snooze

[48] Пост: https://atymic.dev/blog/laravel-snooze/

[49] mad-web/laravel-initializer: https://github.com/mad-web/laravel-initializer

[50] evgwed: https://habr.com/ru/users/evgwed/

[51] Туториал по созданию пакета для Laravel: https://johnbraun.blog/posts/creating-a-laravel-package-1

[52] О создании кастомных отношений в Laravel: https://stitcher.io/blog/laravel-custom-relation-classes

[53] перевод: https://laravel.demiart.ru/custom-relationship/

[54] Доменно-ориентированный Laravel: https://stitcher.io/blog/laravel-beyond-crud

[55] о моделях: https://stitcher.io/blog/laravel-beyond-crud-04-models

[56] паттерне «состояние»: https://stitcher.io/blog/laravel-beyond-crud-05-states

[57] управлении доменами: https://stitcher.io/blog/laravel-beyond-crud-06-managing-domains

[58] Как настроить масштабируемое приложение Laravel 6: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-scalable-laravel-6-application-using-managed-databases-and-object-storage

[59] Отключите HTTP сессии в Laravel, чтобы ускорить ваши API: https://ma.ttias.be/disable-http-sessions-in-laravel-to-speed-up-your-api/

[60] Перевод: https://laravel.demiart.ru/disable-http-sessions-to-speed-up-api/

[61] Пишем приложения на Laravel, которые легко поддерживать: https://laravel.demiart.ru/maintainable-laravel-apps/

[62] Делим Laravel на компоненты: https://habr.com/ru/post/475144/

[63] Организация маршрутов в Laravel: https://habr.com/ru/post/474788/

[64] Серия стримов о создании: https://www.youtube.com/playlist?list=PLmwAMIdrAmK5q0c0JUqzW3u9tb0AqW95w

[65] laravel-shift/blueprint: https://github.com/laravel-shift/blueprint

[66] Об оптимизации приложений на Yii 2: https://2amigos.us/blog/yii2-application-optimization

[67] Yii 2.0.30, расширения и Yii 3: https://yiiframework.ru/news/254/yii-2030-rassirenia-i-yii-3

[68] DriftPHP: https://github.com/driftphp

[69] Демо приложение: https://github.com/driftphp/demo

[70] clue/reactphp-ami: https://github.com/clue/reactphp-ami

[71] блог пост: https://clue.engineering/2019/introducing-reactphp-ami

[72] PHP-Watcher: инструмент, который упрощает разработку долгоживущих приложений: https://habr.com/ru/company/skyeng/blog/475624/

[73] Защищённые роуты: https://www.youtube.com/watch?v=Y0Ve5LMr5hA

[74] 5 способов улучшить производительность PHP: https://tideways.com/profiler/blog/5-ways-to-increase-php-performance

[75] The Undercover ElePHPant #2: https://undercover-elephpant.com/episodes/php-performance-with-marco-pivetta-ocramius

[76] Marco «Ocramius» Pivetta: https://twitter.com/Ocramius

[77] Как быстро обновить версию PHPUnit с 4 вплоть до PHPUnit 8: https://www.tomasvotruba.cz/blog/2019/11/04/still-on-phpunit-4-come-to-phpunit-8-together-in-a-day/

[78] Ответы на часто задаваемые вопросы по Serverless PHP: https://mnapoli.fr/serverless-php-faq/

[79] Пишем свой Doctrine Annotation Fixer для PHP-CS-Fixer: https://vtvz.ru/blog/custom-doctrine-annotation-fixer/

[80] vtvz_ru: https://habr.com/ru/users/vtvz_ru/

[81] Уровни изолированности транзакций БД для самых маленьких: https://habr.com/ru/post/469415/

[82] Как добавить проверки в NoVerify: https://habr.com/ru/company/vk/blog/473718/

[83] PHP Composer: фиксим зависимости без боли: https://habr.com/ru/company/badoo/blog/473654/

[84] Туториал по использованию HTTP-клиента в PhpStorm: https://blog.jetbrains.com/phpstorm/2019/11/http-client-in-phpstorm-overview/

[85] Laravel Snippet #18: Clear Writing, Great Quality, Low Pain Tolerance: https://blog.laravel.com/laravel-snippet-18-clear-writing-great-quality-low-pain-tolerance

[86] Marco Pivetta: Aggressive PHP Quality Assurance in 2019: https://www.youtube.com/watch?v=8rdTSYljts4

[87] Symfony Camp 2019: https://www.youtube.com/channel/UCd1Ds7u1mAjEwHrZ9jG1Arg/videos?view=0&sort=dd&flow=grid

[88] PHP Internals News podcast #35: https://phpinternals.news/35

[89] Scott Arciszewski: https://twitter.com/CiPHPerCoder

[90] уязвимости в PHP-FPM: https://www.opennet.ru/opennews/art.shtml?num=51749

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