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

PHP-Дайджест № 151 (25 февраля – 11 марта 2019)

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: обновления PHP, Laravel 5.8, Xdebug 2.7 и другие релизы, 3 свежих RFC, 2 принятых, и концепт из PHP Internals, порция полезных инструментов, и многое другое.

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

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

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 3 PHP Internals

  • [RFC] Saner string to number comparisons [7] — В своем свежем RFC Никита Попов предлагает изменить поведение == и сделать нестрогие сравнения менее подверженными ошибкам. В частности, сравнение чисел предлагается использовать, только если сравниваемая строка на самом деле является числовой. В противном случае число преобразуется в строку, и выполняется сравнение строк.

    PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 4

    Данное предложение влечет за собой изменение поведения операторов сравнения  <=>==!=>>=<, и <=, конструкции switch, функций типа in_array(), sort() и других.

    В ответ поступили идеи разной степени радикальности: от введения специального флага declare('strict_comparison=1');, который бы превращал все == в ===, до предложения отменить == вообще [8].

    Ну а пока, в 7.4, вероятно, будет бросаться Warning [9], если результат сравнения отличается от предполагаемого в PHP 8.

  • [RFC] Permit trailing whitespace in numeric strings [10] — Еще одно предложение призванное улучшить консистентность, но путем ослабления. Предлагается разрешить пробельные символы в конце числовых строк, то есть чтоб "123 " == " 123" и все прочие операции работали, как и для строк с начальными пробелами.
  • [RFC] Consistent type errors for internal functions [11] — Предложение принято и значит в PHP 8 встроенные функции будут бросать TypeError в случае, если переданы параметры неверного типа и соответственно не будут при этом возвращать null.
  • [RFC] Weak References [12] — Предложение по реализации слабых ссылок принято.
  • [RFC] Locked Classes [13] — Предлагается ввести новое ключевое слово locked для классов. Такие классы будут закрыты для динамического использования свойств, то есть нельзя обращаться к необъявленным свойствам:
    Скрытый текст

    locked class TestClass {
        public $definedProp;
    }
    
    $t = new testClass();
    $t->definedProp = "OK";
    echo $t->definedProp;
    unset($t->definedProp);
    
    echo $t->nonExistentProp; // Error
    $t->nonExistentProp = "Not OK"; // Error
    unset($t->definedProp); // Error
    
  • video PHP Internals News: Episode 1 [14] — Новый подкаст от автора Xdebug Derick Rethans. В первом выпуске разговор с Никитой Поповым.
  • Allow throwing from __toString() [15]PR [16] от Никиты с фиксом одной из старых проблем PHP [17] – невозможность бросать исключения в __toString.
  • List comprehension [18] — Концепт от Сары Гоулман с реализацией спискового включения (list comprehension) для PHP. Синтаксис менее элегантный, чем в Python, но выглядит интересно:
    Скрытый текст

    $a = [1, 2, 3];
    $mul = 3;
    $c = [ for $a as $v yield $mul * $v use ($mul) ];
    

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 6 Инструменты

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 8 Symfony

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 9 Laravel

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 13 Yii

  • Yii 2.0.16.1 [52]
  • Релизный цикл Yii [53] — Мажорный релиз поддерживается 5 лет, из которых 2 активных фиксов и 3 – фиксы ошибок безопасности.
  • zhuravljov/yii2-queue-monitor [54] — Веб-интерфейс для мониторинга и управления очередями Yii2.

Async PHP

PHP-Дайджест № 151 (25 февраля – 11 марта 2019) - 14 Материалы для обучения

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

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

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

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

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

Источник [76]


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

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

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

[1] PHP 7.3.3: http://php.net/ChangeLog-7.php#7.3.3

[2] PHP 7.2.16: http://php.net/ChangeLog-7.php#7.2.16

[3] PHP 7.1.27: http://php.net/ChangeLog-7.php#7.1.27

[4] Xdebug 2.7.0: https://xdebug.org/#2019_03_06

[5] Drupal Camp Belarus 2019: https://drupalcamp.by/

[6] chilic: https://habr.com/ru/users/chilic/

[7] [RFC] Saner string to number comparisons: https://wiki.php.net/rfc/string_to_number_comparison

[8] отменить == вообще: https://github.com/Majkl578/php-src/commit/578cc9e273ab8ef50c1392a524292c19e23d21e7

[9] в 7.4, вероятно, будет бросаться Warning: https://github.com/php/php-src/pull/3917

[10] [RFC] Permit trailing whitespace in numeric strings: https://wiki.php.net/rfc/trailing_whitespace_numerics

[11] [RFC] Consistent type errors for internal functions: https://wiki.php.net/rfc/consistent_type_errors

[12] [RFC] Weak References: https://wiki.php.net/rfc/weakrefs

[13] [RFC] Locked Classes: https://wiki.php.net/rfc/locked-classes

[14] PHP Internals News: Episode 1: https://derickrethans.nl/phpinternalsnews-01.html

[15] Allow throwing from __toString(): http://news.php.net/php.internals/104535

[16] PR: https://github.com/php/php-src/pull/3887

[17] одной из старых проблем PHP: http://phpsadness.com/sad/14

[18] List comprehension: https://github.com/php/php-src/compare/master...sgolemon:list.comp

[19] spatie/image-optimizer: https://github.com/spatie/image-optimizer

[20] swagger-mock/swagger-mock: https://github.com/swagger-mock/swagger-mock

[21] strider2038: https://habr.com/ru/users/strider2038/

[22] johnkary/phpunit-speedtrap: https://github.com/johnkary/phpunit-speedtrap

[23] BrainMaestro/composer-git-hooks: https://github.com/BrainMaestro/composer-git-hooks

[24] blastcloud/guzzler: https://github.com/blastcloud/guzzler

[25] ptlis/php-serialized-data-editor: https://github.com/ptlis/php-serialized-data-editor

[26] bakame-php/csv-doctrine-collections-bridge: https://github.com/bakame-php/csv-doctrine-collections-bridge

[27] посте: https://nyamsprod.com/blog/2018/using-doctrine-collections-to-improve-csv-filtering/

[28] VKCOM/noverify: https://github.com/VKCOM/noverify

[29] z7zmey/php-parser: https://github.com/z7zmey/php-parser

[30] Хабрапост в поддержку: https://habr.com/ru/company/vk/blog/442284/

[31] Symfony Gets Real-time Push Capabilities!: https://symfony.com/blog/symfony-gets-real-time-push-capabilities

[32] Mercure: https://github.com/dunglas/mercure

[33] Классы в неймспейсах: https://symfony.com/blog/new-in-twig-namespaced-classes

[34] symfony/http-client: https://github.com/symfony/http-client/

[35] слайдах Фабьена: https://speakerdeck.com/fabpot/2-new-symfony-components-httpclient-and-mime?slide=29

[36] King2500/symfony-meta: https://github.com/King2500/symfony-meta

[37] новым возможностям .phpstorm.meta.php: https://blog.jetbrains.com/phpstorm/2019/02/new-phpstorm-meta-php-features/

[38] Неделя Symfony #636 (4-10 марта 2019): https://symfony.com/blog/a-week-of-symfony-636-4-10-march-2019

[39] Laravel 5.8: https://laravel.com/docs/5.8/releases#laravel-5.8

[40] Image: https://vimeo.com/322129784

[41] Laravel Snippet #7: https://blog.laravel.com/laravel-snippet-7

[42] #8: https://blog.laravel.com/laravel-snippet-8

[43] Как заменить фасады и статические вызовы в Laravel на Dependency Injection: https://www.tomasvotruba.cz/blog/2019/03/04/how-to-turn-laravel-from-static-to-dependency-injection-in-one-day/

[44] REST API на Laravel в 100 строк кода: https://habr.com/ru/post/441946/

[45] psalm/laravel-psalm-plugin: https://github.com/psalm/laravel-psalm-plugin

[46] laravel-ide-helper: https://github.com/barryvdh/laravel-ide-helper

[47] Пост: https://medium.com/@muglug/announcing-psalm-support-for-laravel-8a0fc507e220

[48] AlexHnydiuk/laracent: https://github.com/AlexHnydiuk/laracent

[49] nokse: https://habr.com/ru/users/nokse/

[50] avto-dev/roadrunner-laravel: https://github.com/avto-dev/roadrunner-laravel

[51] paramtamtam: https://habr.com/ru/users/paramtamtam/

[52] Yii 2.0.16.1: https://www.yiiframework.com/news/197/yii-2-0-16-1-is-released

[53] Релизный цикл Yii: https://www.yiiframework.com/release-cycle

[54] zhuravljov/yii2-queue-monitor: https://github.com/zhuravljov/yii2-queue-monitor

[55] WyriHaximus/reactphp-cron: https://github.com/wyrihaximus/reactphp-cron

[56] phpinnacle/ensign: https://github.com/phpinnacle/ensign

[57] Amphp: https://github.com/amphp

[58] Предсказываем загрязнение воздуха методом k-ближайших соседей на PHP: https://arkadiuszkondas.com/predict-air-pollution-with-k-nearest-neighbors-and-php/

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

[60] Реализация двоичной кучи на PHP: https://arkadiuszkondas.com/binary-heap-implementation-in-php/

[61] Hand-written service containers: https://matthiasnoback.nl/2019/03/hand-written-service-containers/

[62] О том, как опечатка привела к эксплуатации RCE-уязвимости: https://medium.com/@DanielC7/remote-code-execution-gaining-domain-admin-privileges-due-to-a-typo-dbf8773df767

[63] Как я использую Live Templates в PhpStorm: https://marijn.huizendveld.com/blog/live-templates-in-phpstorm#article

[64] как шарить сниппеты для PhpStorm: https://blog.jetbrains.com/phpstorm/2018/10/sharing-code-snippets-in-phpstorm-easy-way/

[65] Шаринг сессий между Node.js и PHP: https://medium.com/@frontman/share-sessions-between-node-js-and-php-services-285560eb5860

[66] Паблик морозов на собеседовании: https://medium.com/@frontman/php-access-to-private-and-protected-b1028b974169

[67] PHP: изменение стуктуры БД в командной разработке: https://habr.com/ru/post/435438/

[68] Автоматизация конвертирования word файлов в другие форматы: https://habr.com/ru/post/441736/

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

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

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

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

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

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

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

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