- PVSM.RU - https://www.pvsm.ru -
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 4, инициатива по консолидации PHP-сообщества, концепт PHP для GraalVM, предложение по дженерикам в Internals, полезные инструменты, видео, подкасты, статьи.
Приятного чтения!
Paul Dragoonis [5] и Christoph Rumpel [6] хотят сдвинуть дело с мертвой точки и для начала создали анонимный опрос The PHP Community Survey 2020 [7].
На синтетическом бенчмарке Computer Language Benchmarks Game [10] показывает более чем 80-кратное увеличение производительности по сравнению с PHP 7.4 [11].
Например, возьмем такой код:
class Collection<T> {
public function add(T $item) { ... }
}
$c = new Collection<Product>().
Статические анализаторы и IDE смогут его распарсить и провести анализ. В то время как интерпретатор дженерики проигнорирует и будет выполнять код как:
class Collection {
public function add(mixed $item) { ... }
}
$c = new Collection().
Идея не новая. Точно так же по умолчанию работают дженерики и в Hack [17]. А в Python, например, почти вся информация о типах в большинстве случаев удаляется и ни один популярный интерпретатор не валидирует типы аргументов.
Подробнее об API в подкасте PHP Internals News #68 [19] с авторами Levi Morrison [20] и Sammy K Powers [21].
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку [61].
Вопросы и предложения пишите на почту [62] или в твиттер [63].
Больше новостей и комментариев в Telegram-канале PHP Digest [64].
Прислать ссылку [65]
Поиск ссылок по всем дайджестам [66]
← Предыдущий выпуск: PHP-Дайджест № 187 [67]
Автор: Роман Пронский
Источник [68]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/357174
Ссылки в тексте:
[1] PHP 8.0.0 Beta 4: https://www.php.net/archive/2020.php#2020-09-17-1
[2] переделывания ворнингов и нотисов: https://wiki.php.net/rfc/engine_warnings
[3] PHP: Community Synergy Initiative: https://www.reddit.com/r/PHP/comments/ivpfcf/php_community_synergy_initiative/
[4] php.net: https://www.php.net/
[5] Paul Dragoonis: https://twitter.com/dr4goonis
[6] Christoph Rumpel : https://twitter.com/christophrumpel
[7] The PHP Community Survey 2020: https://docs.google.com/forms/d/e/1FAIpQLSc5tGeRixL62mT90TwRGTtQXq-MeN6jUcBnCwKqmBo_lzXOyQ/viewform
[8] Концепт реализации PHP для GraalVM: https://github.com/abertschi/graalphp
[9] пока сделано: https://github.com/oracle/graal/issues/361#issuecomment-692670732
[10] Computer Language Benchmarks Game: https://en.wikipedia.org/wiki/The_Computer_Language_Benchmarks_Game
[11] по сравнению с PHP 7.4: https://github.com/abertschi/graalphp/blob/master/results.md
[12] Поддержка MySQL 5.6 заканчивается в феврале 2021: https://elephantdolphin.blogspot.com/2020/09/mysql-56-end-of-life-is-less-than-six.html
[13] статистика: https://wordpress.org/about/stats/#mysql_versions
[14] Composer 2.0 RC1: https://github.com/composer/composer/releases/tag/2.0.0-RC1
[15] Удаляемые дженерики (eliding generics): https://externals.io/message/111875
[16] постами о Laravel и PHP: https://stitcher.io/
[17] в Hack: https://docs.hhvm.com/hack/generics/type-erasure
[18] Observer API: https://github.com/php/php-src/pull/5857
[19] PHP Internals News #68: https://phpinternals.news/68
[20] Levi Morrison: https://twitter.com/morrisonlevi
[21] Sammy K Powers: https://twitter.com/SammyK
[22] phpbench/phpbench 1.0.0-alpha1: https://github.com/phpbench/phpbench
[23] в посте: https://www.dantleech.com/blog/2020/09/09/phpbench-alpha1/
[24] seanmorris/php-wasm: https://github.com/seanmorris/php-wasm
[25] Drupal в браузере: https://seanmorris.github.io/php-wasm/?autorun=1&code=%253C%253Fphp%250Aini_set%28%27session.save_path%27%252C%2520%27%252Fhome%252Fweb_user%27%29%253B%250Asession_id%28%27fake-cookie%27%29%253B%250Asession_start%28%29%253B%250A%250A%2524stdErr%2520%253D%2520fopen%28%27php%253A%252F%252Fstderr%27%252C%2520%27w%27%29%253B%250A%2524errors%2520%253D%2520%255B%255D%253B%250A%250Aregister_shutdown_function%28function%28%29%2520use%28%2524stdErr%252C%2520%2526%2524errors%29%257B%250A%2520%2520%2520%2520fwrite%28%2524stdErr%252C%2520json_encode%28%255B%27session_id%27%2520%253D%253E%2520session_id%28%29%255D%29%2520.%2520%2522%255Cn%2522%29%253B%250A%2520%2520%2520%2520fwrite%28%2524stdErr%252C%2520json_encode%28%255B%27headers%27%253D%253Eheaders_list%28%29%255D%29%2520.%2520%2522%255Cn%2522%29%253B%250A%2520%2520%2520%2520fwrite%28%2524stdErr%252C%2520json_encode%28%255B%27errors%27%2520%253D%253E%2520error_get_last%28%29%255D%29%2520.%2520%2522%255Cn%2522%29%253B%250A%257D%29%253B%250A%250Aset_error_handler%28function%28...%2524args%29%2520use%28%2524stdErr%252C%2520%2526%2524errors%29%257B%250A%2509fwrite%28%2524stdErr%252C%2520print_r%28%2524args%252C1%29%29%253B%250A%257D%29%253B%250A%250A%2524origin%2520%2520%253D%2520%27http%253A%252F%252Flocalhost%253A3333%27%253B%250A%2524docroot%2520%253D%2520%27%252Fpreload%252Fdrupal-7.59%27%253B%250A%2524path%2520%2520%2520%2520%253D%2520%27%252F%27%253B%250A%2524script%2520%2520%253D%2520%27index.php%27%253B%250A%250A%2524_SERVER%255B%27REQUEST_URI%27%255D%2520%2520%2520%2520%2520%253D%2520%2524docroot%253B%250A%2524_SERVER%255B%27REMOTE_ADDR%27%255D%2520%2520%2520%2520%2520%253D%2520%27127.0.0.1%27%253B%250A%2524_SERVER%255B%27SERVER_NAME%27%255D%2520%2520%2520%2520%2520%253D%2520%2524origin%253B%250A%2524_SERVER%255B%27SERVER_PORT%27%255D%2520%2520%2520%2520%2520%253D%25203333%253B%250A%2524_SERVER%255B%27REQUEST_METHOD%27%255D%2520%2520%253D%2520%27GET%27%253B%250A%2524_SERVER%255B%27SCRIPT_FILENAME%27%255D%2520%253D%2520%2524docroot%2520.%2520%27%252F%27%2520.%2520%2524script%253B%250A%2524_SERVER%255B%27SCRIPT_NAME%27%255D%2520%2520%2520%2520%2520%253D%2520%2524docroot%2520.%2520%27%252F%27%2520.%2520%2524script%253B%250A%2524_SERVER%255B%27PHP_SELF%27%255D%2520%2520%2520%2520%2520%2520%2520%2520%253D%2520%2524docroot%2520.%2520%27%252F%27%2520.%2520%2524script%253B%250A%250Achdir%28%2524docroot%29%253B%250A%250Adefine%28%27DRUPAL_ROOT%27%252C%2520getcwd%28%29%29%253B%250A%250Arequire_once%2520DRUPAL_ROOT%2520.%2520%27%252Fincludes%252Fbootstrap.inc%27%253B%250Adrupal_bootstrap%28DRUPAL_BOOTSTRAP_FULL%29%253B%250A%250A%2524uid%2520%2520%2520%2520%2520%253D%25201%253B%250A%2524user%2520%2520%2520%2520%253D%2520user_load%28%2524uid%29%253B%250A%2524account%2520%253D%2520array%28%27uid%27%2520%253D%253E%2520%2524user-%253Euid%29%253B%250Auser_login_submit%28array%28%29%252C%2520%2524account%29%253B%250A%250Amenu_execute_active_handler%28%29%253B&persist=0&render-as=html&single-expression=0
[26] imliam/php-unique-gmail-address: https://github.com/imliam/php-unique-gmail-address
[27] jawira/emoji-catalog: https://github.com/jawira/emoji-catalog
[28] Неделя Symfony #716 (14-20 сентября 2020): https://symfony.com/blog/a-week-of-symfony-716-14-20-september-2020
[29] Релиз Laravel 8: https://laravel-news.com/laravel8
[30] на Laracasts: https://laracasts.com/series/whats-new-in-laravel-8
[31] Обзор системы аутентификации в Laravel: https://laravel.com/docs/8.x/authentication#ecosystem-overview
[32] laravel/fortify: https://github.com/laravel/fortify
[33] laravel/jetstream: https://jetstream.laravel.com/1.x/introduction.html
[34] Как переключить драйвер очереди в Laravel на лету: https://divinglaravel.com/switching-between-queue-drivers-in-laravel-without-stopping-the-world
[35] Laravel Business: https://www.youtube.com/channel/UCTuplgOBi6tJIlesIboymGA/videos
[36] Распространенные ошибки безопасности в приложениях Laravel: https://habr.com/ru/post/518400/
[37] Laravel–Дайджест (14–20 сентября 2020): https://habr.com/ru/post/519916/
[38] Yii 2.0.38: https://www.yiiframework.com/news/303/yii-2-0-38
[39] Новости Yii 2020, выпуск 6: https://habr.com/ru/post/519742/
[40] Создаем PSR-15 адаптер для react/http: https://blog.wyrihaximus.net/2020/09/next-gen-react-http-psr-15-adapter/
[41] krakjoe/parallel: https://github.com/krakjoe/parallel
[42] Используем ReactPHP для работы с HTTP API: https://mglaman.dev/blog/using-reactphp-consume-data-http-api
[43] Как ускорить разработку с помощью лайв темплейтов (сниппеты кода) в PhpStorm: https://www.youtube.com/watch?v=ec3aOtWxOog
[44] Code With Me: https://surveys.jetbrains.com/s3/code-with-me
[45] Простой рецепт отвязывания логики приложения от фреймворка: https://matthiasnoback.nl/2020/09/simple-recipe-for-framework-decoupling/
[46] О влиянии исключений на производительность: https://php.watch/articles/php-exception-performance
[47] Пошаговая инструкция о том, как контрибьютить в опенсорсные пакеты PHP.: https://johnbraun.blog/posts/contributing-to-a-PHP-package
[48] 4 совета по рефакторингу в PHP: https://christoph-rumpel.com/2020/8/refactoring-php
[49] Часть 1 — типичные проблемы: https://labs.detectify.com/2020/08/13/modern-php-security-part-1-bug-classes/
[50] Часть 2 — рекомендации по защите: https://labs.detectify.com/2020/08/20/modern-php-security-part-2-breaching-and-hardening-the-php-engine/
[51] Диалекты в коде: часть 2: https://www.rosstuck.com/dialects-in-code-part-2
[52] HTTP-клиент на стероидах: https://habr.com/ru/post/518978/
[53] Среда разработки PHP на базе Docker: https://habr.com/ru/post/519500/
[54] Ускоряем кеш проекта в NoVerify (линтер для PHP) в 10 раз: https://habr.com/ru/post/519706/
[55] Улучшения покрытия PHP кода в 2020 году: https://habr.com/ru/company/oleg-bunin/blog/519080/
[56] Никита Попов и Nikolas Grekas обсуждают совместимость Symfony с PHP 8: https://www.youtube.com/watch?v=c3bpTBjhK2Y
[57] Использование Xdebug для отслеживания функций: https://vimeo.com/457966378
[58] как использовать профайлер Xdebug: https://vimeo.com/455589710
[59] Неофициальное лого PHP 8: https://www.elephpant.com/#:~:text=PHP8%20logo
[60] White ConFoo elePHPant: https://shop.confoo.ca/foo-du-roi
[61] личку: https://habrahabr.ru/conversations/pronskiy/
[62] почту: mailto:roman@pronskiy.com
[63] твиттер: https://twitter.com/pronskiy
[64] PHP Digest: https://t.me/phpdigest
[65] Прислать ссылку: https://bit.ly/php-digest-add-link
[66] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/
[67] Предыдущий выпуск: PHP-Дайджест № 187: https://habr.com/ru/post/518064/
[68] Источник: https://habr.com/ru/post/519960/?utm_source=habrahabr&utm_medium=rss&utm_campaign=519960
Нажмите здесь для печати.