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

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018)

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0, Symfony 4.2, Composer 1.8.0 и другие релизы, конец поддержки PHP 5.6 и PHP 7.0, свежие предложения из PHP Internals, порция полезных инструментов, видеозаписи докладов и многое другое.
Приятного чтения!

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 2 Новости и релизы

  • PHP 7.3.0 [1] — Долгожданный мажорный релиз PHP доставлен строго по расписанию. Спасибо всем контрибьюторам и релиз-менеджерам за проделанную работу! В свежей версии интерпретатора ряд улучшений:
    • Улучшения Heredoc и Nowdoc синтаксиса RFC [2]
    • Функции json_encode() и json_decode() будут бросать исключение в случае ошибки и наличия соответствующего флага RFC [3]
    • Возможность использовать запятую после последнего аргумента функции RFC [4]
    • Добавлены функции array_key_first() и array_key_last() RFC [5]
    • Новая функция hrtime(), которая возвращает время высокой точности и не зависит от системного времени PR [6]
    • Добавлена функция is_countable() для проверки на перечислимость RFC [7]
    • Использование ссылок в list() RFC [8]
    • Значительное улучшение сборщика мусора улучшает работу с больши́м количеством объектов PR [9]
    • Движок регулярных выражений обновлен до PCRE2 RFC [10]
    Полный список изменений в документе UPGRADING [11].
    Очень рекомендую посмотреть руководство по миграции с PHP 7.2.x на PHP 7.3.x [12], спасибо lex111 [13] за перевод.
  • Свет также увидели обновления PHP 5.6.39 [14], PHP 7.0.33 [15], PHP 7.1.25 [16] и PHP 7.2.13 [17]. И это последние релизы веток 5.6 и 7.0, а PHP 7.1 переходит в режим поддержки безопасности. Таким образом, на данный момент актуальными остаются только ветки PHP 7.2 и PHP 7.3.
  • PHP на AWS Lambda [18] — На конференции AWS re:Invent 2018, кроме всего прочего, анонсирована поддержка кастомных рантаймов для AWS Lambda. PHP из коробки поддерживается через stackery/php-lambda-layer [19], но можно сделать и свою реализацию. Это значит, что вместо костылей [20] в виде запуска через Nodejs или Go, теперь можно писать полноценные лямбды на чистом PHP.
  • Composer 1.8.0 [21]
  • CakePHP 3.7.0 [22]
  • PHPUnit 7.5.0 [23]

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 3 PHP Internals

  • [RFC] FFI — Foreign Function Interface [24]Концепт [25] от Дмитрия Стогова теперь оформлен в виде полноценного предложения. Реализация даст возможность использовать функции и структуры данных из C-модулей напрямую. В качестве примера можно посмотреть на PHP-биндинг для TensorFlow [26]. Большие возможности, правда, открывают и широкий простор для потенциальных проблем и уязвимостей, поэтому предлагается по умолчанию разрешить FFI только в CLI-скриптах и предзагруженных файлах.
  • [RFC] Covariant Returns and Contravariant Parameters [27] — Предлагается сделать более консистентным типы, в частности, разрешить «сужать» тип возвращаемого значения в наследниках, и «расширять» тип параметров.
    Скрытый текст

    interface X {
      function m(Y $z): X;
    }
    interface Y extends X {
      // Тут можно будет сужать тип
      function m(X $z): Y;
    }
    
    
    
    interface Concatable {
        function concat(Iterator $input); 
    }
     
    class Collection implements Concatable {
        // А тут можно будет расширять тип
        function concat(iterable $input) {/* . . . */}
    }
    

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 4 Инструменты

  • spatie/period [28] — Библиотека позволяет делать сложные сравнения дат, например, найти пересечения периодов, разницу, пробелы, крайние границы и прочее.
  • scrivo/highlight.php [29] — Порт highlight.js [30], который позволяет подсвечивать синтаксис на сервере. Интеграция с markdown через spatie/commonmark-highlighter [31].
  • 3v4l.org/live [32] — Интерактивный онлайн PHP шелл (REPL).
  • j6s/phparch [33] — Библиотека для архитектурного тестирования PHP-проектов, вдохновленная archlint (C#) и archunit (Java). Разработка в процессе.
  • halaxa/json-machine [34] — Потоковое чтение (декодирование) JSON. Для потокового кодирования подойдет violet-php/streaming-json-encoder [35].
  • DivineOmega/password_exposed [36] — Проверяет с помощью haveibeenpwned.com [37] API был пароль скомпрометирован.
  • skollro/alexa-php-sdk [38] — SDK для разработки скилов для Amazon Alexa на PHP.
  • pyrech/composer-changelogs [39] — В удобном виде выводит информацию об обновленных пакетах после выполнения composer update.
  • RubixML/RubixML [40] — Библиотека для применения машинного обучения на PHP. Альтернатива php-ai/php-ml [41].

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 5 Материалы для обучения

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 19 Аудио и видеоматериалы

PHP-Дайджест № 145 (26 ноября – 10 декабря 2018) - 23 Занимательное

  • MagicalTux/goro [98] — Попытка реализовать PHP на Go.

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

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

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

Прислать ссылку [103]
Поиск ссылок по всем дайджестам [104]
Предыдущий выпуск: PHP-Дайджест № 144 [105]

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

Источник [106]


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

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

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

[1] PHP 7.3.0: http://php.net/releases/7_3_0.php

[2] RFC: https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes

[3] RFC: https://wiki.php.net/rfc/json_throw_on_error

[4] RFC: https://wiki.php.net/rfc/trailing-comma-function-calls

[5] RFC: https://wiki.php.net/rfc/array_key_first_last

[6] PR: https://github.com/php/php-src/pull/2976

[7] RFC: https://wiki.php.net/rfc/is-countable

[8] RFC: https://wiki.php.net/rfc/list_reference_assignment

[9] PR: https://github.com/php/php-src/pull/3165

[10] RFC: https://wiki.php.net/rfc/pcre2-migration

[11] UPGRADING: https://github.com/php/php-src/blob/php-7.3.0/UPGRADING

[12] миграции с PHP 7.2.x на PHP 7.3.x: http://docs.php.net/manual/ru/migration73.php

[13] lex111: https://habr.com/users/lex111/

[14] PHP 5.6.39: http://php.net/archive/2018.php#id2018-12-06-2

[15] PHP 7.0.33: http://php.net/archive/2018.php#id2018-12-06-5

[16] PHP 7.1.25: http://php.net/archive/2018.php#id2018-12-06-4

[17] PHP 7.2.13: http://php.net/archive/2018.php#id2018-12-06-3

[18] PHP на AWS Lambda: https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/

[19] stackery/php-lambda-layer: https://github.com/stackery/php-lambda-layer

[20] костылей: https://medium.com/@stephenheron/serverless-php-9da3f00df5de

[21] Composer 1.8.0: https://github.com/composer/composer/releases/tag/1.8.0

[22] CakePHP 3.7.0: https://bakery.cakephp.org/2018/12/08/cakephp_370_released.html

[23] PHPUnit 7.5.0: https://github.com/sebastianbergmann/phpunit/blob/7.5.0/ChangeLog-7.5.md#750---2018-12-07

[24] [RFC] FFI — Foreign Function Interface: https://wiki.php.net/rfc/ffi

[25] Концепт: https://github.com/dstogov/php-ffi

[26] PHP-биндинг для TensorFlow: https://github.com/dstogov/php-tensorflow

[27] [RFC] Covariant Returns and Contravariant Parameters: https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters

[28] spatie/period: https://github.com/spatie/period

[29] scrivo/highlight.php: https://github.com/scrivo/highlight.php

[30] highlight.js: https://highlightjs.org/

[31] spatie/commonmark-highlighter: https://github.com/spatie/commonmark-highlighter

[32] 3v4l.org/live: https://3v4l.org/live

[33] j6s/phparch: https://github.com/j6s/phparch

[34] halaxa/json-machine: https://github.com/halaxa/json-machine

[35] violet-php/streaming-json-encoder: https://github.com/violet-php/streaming-json-encoder

[36] DivineOmega/password_exposed: https://github.com/DivineOmega/password_exposed

[37] haveibeenpwned.com: https://haveibeenpwned.com

[38] skollro/alexa-php-sdk: https://github.com/skollro/alexa-php-sdk

[39] pyrech/composer-changelogs: https://github.com/pyrech/composer-changelogs

[40] RubixML/RubixML: https://github.com/RubixML/RubixML

[41] php-ai/php-ml: https://github.com/php-ai/php-ml

[42] Symfony 4.2.0: https://symfony.com/blog/symfony-4-2-0-released

[43] тут: https://symfony.com/blog/symfony-4-2-curated-new-features

[44] Неделя Symfony #623 (3-9 декабря 2018): https://symfony.com/blog/a-week-of-symfony-623-3-9-december-2018

[45] Неделя Symfony #622 (26 ноября — 2 декабря 2018): https://symfony.com/blog/a-week-of-symfony-622-26-november-2-december-2018

[46] EasyCorp/EasyAdminBundle 2.0.0: https://github.com/EasyCorp/EasyAdminBundle/releases/tag/v2.0.0

[47] Лучшие плагины PhpStorm для разработки на Symfony: https://blog.martinhujer.cz/best-phpstorm-plugins-for-symfony-development/

[48] Как управлять конфигурацией в Symfony: https://www.tomasvotruba.cz/blog/2018/11/29/how-to-manage-configuration-in-symfony-without-bundle-extension-and-configuraiton/

[49] Пятиминутка PHP Выпуск №43: https://5minphp.ru/episode43/

[50] cebe/yii2-openapi: https://github.com/cebe/yii2-openapi

[51] beyondcode/laravel-websockets: https://github.com/beyondcode/laravel-websockets

[52] Ratchet: https://github.com/ratchetphp/Ratchet

[53] демоприложение: https://github.com/beyondcode/laravel-websockets-demo

[54] анонсе инструмента: https://murze.be/introducing-laravel-websockets-an-easy-to-use-websocket-server-implemented-in-php

[55] документации: https://docs.beyondco.de/laravel-websockets/

[56] видеообзоре: https://www.youtube.com/watch?time_continue=3&v=GtphrhnFwZQ

[57] qcod/laravel-gamify: https://github.com/qcod/laravel-gamify

[58] sveneisenschmidt/yay: https://github.com/sveneisenschmidt/yay

[59] spatie/laravel-collection-macros: https://github.com/spatie/laravel-collection-macros

[60] Делаем резервные копии базы данных Laravel на Google Drive: https://medium.com/@dennissmink/laravel-backup-database-to-your-google-drive-f4728a2b74bd

[61] Быстрые подсказки по производительности в Laravel: https://www.youtube.com/playlist?list=PL1TrjkMQ8UbWRZ4tv4GW_KwbyavOxt6bc

[62] friends-of-reactphp/mysql: https://github.com/friends-of-reactphp/mysql

[63] ленивых соединениях: https://www.lueck.tv/2018/introducing-reactphp-mysql-lazy-connections

[64] walkor/shadowsocks-php: https://github.com/walkor/shadowsocks-php

[65] shadowsocks: https://github.com/shadowsocks/shadowsocks

[66] Workerman: https://github.com/walkor/Workerman

[67] Корутины в PHP на Swoole 4.x vs корутины Golang: https://www.swoole.co.uk/article/coroutine-swoole-vs-golang

[68] WordPress 5.0 “Bebo”: https://wordpress.org/news/2018/12/bebo/

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

[70] Сlassic Editor: https://wordpress.org/plugins/classic-editor/

[71] будет повышена: https://twitter.com/miss_jwo/status/1071540985702825991

[72] 2019 года: https://twitter.com/miss_jwo/status/1071556243406376960

[73] Magento Tech Digest #38: Nov 26 – Dec 03, 2018: https://www.maxpronko.com/magento-tech-digest-38-nov-26-dec-03-2018/

[74] Релиз платформы Magento 2.3.0 GA: https://habr.com/post/431480/

[75] Magento Meetup Kharkiv №4 — видео докладов: https://habr.com/post/432090/

[76] Система управления складом с использованием CQRS и Event Sourcing (Magento): https://habr.com/post/431924/

[77] ajinabraham/CMSScan: https://github.com/ajinabraham/CMSScan

[78] wpscan: https://github.com/wpscanteam/wpscan

[79] droopescan: https://github.com/droope/droopescan

[80] vbscan: https://github.com/rezasp/vbscan

[81] joomscan: https://github.com/rezasp/joomscan

[82] PHP Security Advent Calendar 2018: https://www.ripstech.com/php-security-calendar-2018/

[83] Уязвимости в PHP и PHPMailer: http://www.opennet.ru/opennews/art.shtml?num=49746

[84] Slice Of PIE #01: https://paragonie.com/blog/2018/11/slice-pie-01

[85] CVE-2018-19789: https://symfony.com/blog/cve-2018-19789-disclosure-of-uploaded-files-full-path

[86] CVE-2018-19790: https://symfony.com/blog/cve-2018-19790-open-redirect-vulnerability-when-using-security-http

[87] Ад зависимостей NPM: сравнение с Symfony, Laravel и API Platform: https://dunglas.fr/2018/11/about-the-dependencies-of-symfony/

[88] event-stream: https://github.com/dominictarr/event-stream

[89] обнаружен вредоносный код: https://github.com/dominictarr/event-stream/issues/116

[90] Конфигурируем генерацию кода в PhpStorm: https://murze.be/configuring-phpstorms-code-generation

[91] 14 вредных советов: https://www.tomasvotruba.cz/blog/2018/11/26/14-tips-to-write-php-code-that-is-hard-to-maintain-and-upgrade/

[92] Мигрируем на password_verify: https://akrabat.com/migrating-to-password_verify/

[93] создания исключений на лету: https://mwop.net/blog/2018-12-05-on-the-fly-exceptions.html

[94] Как выруливать с legacy code, когда проект нужно было на вчера: https://habr.com/post/431562/

[95] На-click-ать известность, или как взбудоражить робота и … остальных: https://habr.com/post/432038/

[96] Пятиминутка PHP Выпуск №42: https://5minphp.ru/episode42/

[97] Подкаст PHP Roundtable #81: https://www.phproundtable.com/episode/php-fig-3-0

[98] MagicalTux/goro: https://github.com/MagicalTux/goro

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

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

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

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

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

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

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

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