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

PHP-Дайджест № 148 (14 – 28 января 2019)

PHP-Дайджест № 148 (14 – 28 января 2019) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: взломан репозиторий PEAR, о будущем Xdebug, конференция PHP Russia 2019, свежие релизы, RFC предложения из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!

PHP-Дайджест № 148 (14 – 28 января 2019) - 2 Новости и релизы

  • Репозиторий PEAR был взломан [1] — Сайт pear.php.net [2] ушел в офлайн и не работает до сих пор. Известно, что в файл go-pear.phar был внедрен вредоносный код. Вы под угрозой, если вручную скачивали [3] этот файл после 20.12.2018. Чтобы проверить надо скачать «чистый» файл с GitHub [4] и сравнить контрольные суммы. Для автоматизации имеется скрипт [5]. Если вы использовали ОС с предустановленным PHP или устанавливали с помощью пакетного менеджера, то крайне маловероятно, что вы когда-либо использовали go-pear.phar. Пока сайт не работает есть обходные пути для установки PEAR-пакетов [6] и сборки PHP из исходников [7].
  • Будущее Xdebug [8] — Автор Xdebug Derick Rethans рассказал о техническом долге и проблемах расширения. Он уходит из MongoDB [9], где проработал последние 7 лет. В ближайшее время намерен заняться рефакторингом и доработкой Хdebug, а также ищет пути финансирования. Поддержать Дерика можно на его Patreon [10].
  • Кто оплачивает разработку PHP? [11] — В конце поста говорится о том, что организация igphp.de [12] совместно с некоторыми ключевыми членами команды PHP планируют решение проблемы финансирования и поддержки PHP, и в скором времени анонсируют его.
  • Компания Perforce поглотит Rogue Wave Software [13]
  • ru Onliner PHP Meetup #3 [14] — Минск, 9 февраля.
  • ru PHP Russia 2019 [15] — 17 мая в Москве состоится специализированная PHP-конференция!
    О том, как появилась идея и о команде можно прочитать в посте Александра Макарова [16]. Полным ходом принимаются заявки на доклады. А также в Telegram доступны официальный канал @PHPRussiaConfChannel [17] и чат @PHPRussiaConfTalks [18] с обсуждениями.

PHP-Дайджест № 148 (14 – 28 января 2019) - 5 PHP Internals

  • [RFC] Null Coalescing Assignment Operator [19] — Предложение было принято больше двух лет назад. И вот реализация комбинированного оператора с проверкой на null ??= наконец-то закончена и смержена. Несмотря на кажущуюся простоту задачи, имплементация оказалась весьма нетривиальной [20].
    Итого: $a ??= $b эквивалентно $a ?? ($a = $b). В случае $a[foo()] ??= bar() функция foo() будет вызвана ровно один раз, а bar() будет вызвана, если $a[foo()] равно null (или не установлено).
    В тему хороший пост о других коротких операторах в PHP [21].
  • [RFC] New custom object serialization mechanism [22] — Свежий RFC от Никиты Попова. Предлагается ввести новый механизм сериализации объектов, добавив пару магических методов:
    // Returns array containing all the necessary state of the object.
    public function __serialize(): array;
     
    // Restores the object state from the given data array.
    public function __unserialize(array $data): void;
    

    Данное изменение призвано исправить проблемы интерфейса Serialiazable. К сожалению, исправить сам интерфейс невозможно, но в случае принятия предложения будет рабочая альтернатива.

  • [RFC] Code free constructor [23] — Предлагается добавить автоматический конструктор, задача которого инициализировать свойства:
    Скрытый текст

    class MotorCycle {
        public $vendor;
        public $cc;
        public $whells = 2;
     
        public function __construct($vendor, $cc) {
            $this->vendor = $vendor;
            $this->cc     = $cc;
        }
     
        //other methods
    }
     
    class MyCustomMotorCycle extends MotorCycle {
        public function __construct($cc, $whells) {
            parent::__construct("Custom", $cc);
         // $this->cc = $cc;  this statement will be added within proposed realisation
            $this->whells = $whells;
        }
    }
    

    для кода выше предлагается следующий альтернативный синтаксис:

    class MotorCycle($vendor, $cc){
        public $whells = 2;
     
        //other methods
    };
     
    class MyCustomMotorCycle($cc, $whells) extends MotorCycle("Custom", $cc){ };
    

PHP-Дайджест № 148 (14 – 28 января 2019) - 6 Инструменты

  • API Platform [24] — Фреймворк на базе компонентов Symfony для создания API. В новой версии поддержка MongoDB, Elasticsearch, OpenAPI v3 и много другого [25].
  • xobotyi/php-mime-type [26] — Библиотека позволяет определить MIME-тип по расширению и наоборот на основе базы jshttp/mime-db [27]. Прислал xobotyi [28].
  • PHPStan 0.11 [29] — Статический анализатор для PHP. Анонс релиза [30]. Вдогонку видео о внутренностях PHPStan [31] от одного из мейнтенеров.
  • Symplify/Statie [32] — Простой генератор статических сайтов на PHP. Быстрый старт [33].
  • leocavalcante/siler [34] — Микрофреймворк реaлизован на простых функциях без использования классов. Можно использовать со Swoole [35]
  • directus/directus [36] — Headless CMS c API.
  • mgp25/Instagram-API [37] — Библиотека дает возможность использовать скрытые в официальном API возможности Instagram.
  • bmitch/churn-php [38] — Инструмент поможет найти кандидатов на рефакторинг – файлы, которые больше всего изменялись в истории Git и имеют наибольшей цикломатической сложностью.

PHP-Дайджест № 148 (14 – 28 января 2019) - 7 Symfony

PHP-Дайджест № 148 (14 – 28 января 2019) - 9 Laravel

Async PHP

  • dantleech/fink [48] — Инструмент для проверки сайта на битые ссылки. Реализован с использованием amphp/artax [49].
  • reactphp/child-process v0.6.0 [50] — Событийная библиотека для работы с дочерними процессами с помощью ReactPHP. Теперь с поддержкой Windows. Подробнее в посте [51].

CMS

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

PHP-Дайджест № 148 (14 – 28 января 2019) - 15 Занимательное

  • Code Galaxies [65] — Забавная 3D визуализация взаимосвязей между Composer-пакетами.

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

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

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

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

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

Источник [73]


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

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

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

[1] Репозиторий PEAR был взломан: https://thehackernews.com/2019/01/php-pear-hacked.html

[2] pear.php.net: http://pear.php.net/

[3] вручную скачивали: https://twitter.com/pear/status/1088450623249408003

[4] GitHub: https://github.com/pear/

[5] скрипт: https://gist.github.com/mlocati/ba9a9bad0ad5f09cd92c3b2897283b42

[6] установки PEAR-пакетов: https://twitter.com/pear/status/1088234418039414785

[7] сборки PHP из исходников: https://twitter.com/lexbi/status/1088049834270121984

[8] Будущее Xdebug: https://derickrethans.nl/xdebug-experience.html

[9] уходит из MongoDB: https://derickrethans.nl/moving-on-from-mongodb.html

[10] его Patreon: https://www.patreon.com/derickr/overview

[11] Кто оплачивает разработку PHP?: https://thephp.cc/news/2019/01/who-pays-for-php

[12] igphp.de: https://igphp.de/

[13] Компания Perforce поглотит Rogue Wave Software: https://www.perforce.com/press-releases/clearlake-capital-backed-perforce-software-acquire-rogue-wave-software

[14] Onliner PHP Meetup #3: https://onliner-eng.timepad.ru/event/894821/

[15] PHP Russia 2019: https://phprussia.ru/

[16] посте Александра Макарова: https://rmcreative.ru/blog/post/php-russia-2019--nachalo

[17] @PHPRussiaConfChannel: https://t.me/PHPRussiaConfChannel

[18] @PHPRussiaConfTalks: https://t.me/PHPRussiaConfTalks

[19] [RFC] Null Coalescing Assignment Operator: https://wiki.php.net/rfc/null_coalesce_equal_operator

[20] оказалась весьма нетривиальной: https://github.com/php/php-src/commit/a50198d0fef652ca052cda642d6e98a9101eb73f

[21] коротких операторах в PHP: https://stitcher.io/blog/shorthand-comparisons-in-php

[22] [RFC] New custom object serialization mechanism: https://wiki.php.net/rfc/custom_object_serialization

[23] [RFC] Code free constructor: https://wiki.php.net/rfc/code_free_constructor

[24] API Platform: https://github.com/api-platform/core

[25] много другого: https://dunglas.fr/2019/01/api-platform-2-4/

[26] xobotyi/php-mime-type: https://github.com/xobotyi/php-mime-type

[27] jshttp/mime-db: https://github.com/jshttp/mime-db

[28] xobotyi: https://habr.com/ru/users/xobotyi/

[29] PHPStan 0.11: https://github.com/phpstan/phpstan

[30] Анонс релиза: https://medium.com/@ondrejmirtes/phpstan-0-11-5aba0e4108c8

[31] видео о внутренностях PHPStan: https://www.youtube.com/watch?v=85Aq2rWpGQE

[32] Symplify/Statie: https://github.com/Symplify/Statie

[33] Быстрый старт: https://www.tomasvotruba.cz/blog/2019/01/07/how-to-create-your-first-php-twig-static-website-under-2-minutes-with-statie/

[34] leocavalcante/siler: https://github.com/leocavalcante/siler

[35] Swoole: https://siler.leocavalcante.com/swoole

[36] directus/directus: https://github.com/directus/directus

[37] mgp25/Instagram-API: https://github.com/mgp25/Instagram-API

[38] bmitch/churn-php: https://github.com/bmitch/churn-php

[39] Видеозаписи SymfonyCon 2018: https://symfonycasts.com/screencast/symfonycon2018

[40] доклад Фабьена о локальном дев сервере: https://symfonycasts.com/screencast/symfonycon2018/back-to-basics

[41] Неделя Symfony #629 (14-20 января 2019): https://symfony.com/blog/a-week-of-symfony-629-14-20-january-2019

[42] Неделя Symfony #630 (21-27 января 2019): https://symfony.com/blog/a-week-of-symfony-630-21-27-january-2019

[43] beyondcode/laravel-mailbox: https://github.com/beyondcode/laravel-mailbox

[44] spatie/laravel-eventsauce: https://github.com/spatie/laravel-eventsauce

[45] EventSauce: https://github.com/eventsaucephp/eventsauce

[46] vanilophp/framework: https://github.com/vanilophp/framework

[47] Laravel Snippet #2: https://blog.laravel.com/laravel-snippet-2

[48] dantleech/fink: https://github.com/dantleech/fink

[49] amphp/artax: https://github.com/amphp/artax

[50] reactphp/child-process v0.6.0: https://github.com/reactphp/child-process

[51] посте: https://www.lueck.tv/2019/introducing-reactphp-child-process

[52] magento/magento-coding-standard: https://github.com/magento/magento-coding-standard

[53] Рекомендации по использованию Drupal без фронтенда (decoupled) в 2019: https://dri.es/how-to-decouple-drupal-in-2019

[54] ускорению подсчета покрытия кода: https://thephp.cc/news/2019/01/faster-code-coverage

[55] krakjoe/pcov: https://github.com/krakjoe/pcov

[56] Почему важно полировать код до мелочей: https://marcelpociot.de/blog/polish-your-code

[57] об использовании препроцессора: https://assertchris.io/post/2019-01-19-phpx-live

[58] preprocess.io: https://preprocess.io/

[59] Мое современное рабочее окружение для PHP: https://johnmackenzie.co.uk/post/my-modern-php-development-setup/

[60] когда объявлять классы финальными: https://ocramius.github.io/blog/when-to-declare-classes-final/

[61] свежее дополнение: https://www.tomasvotruba.cz/blog/2019/01/24/how-to-kill-parents/

[62] Создание сторис для Instagram из PHP: https://habr.com/ru/post/436514/

[63] Работа начинается с тестирования: https://habr.com/ru/post/436714/

[64] Сравниваем PHP FPM, PHP PPM, Nginx Unit, React PHP и RoadRunner: https://habr.com/ru/post/431818/

[65] Code Galaxies: https://anvaka.github.io/pm/#/galaxy/composer?cx=1906&cy=4425&cz=-5758&lx=-0.2126&ly=0.8890&lz=0.3145&lw=0.2560&ml=150&s=1.75&l=1&v=2015-12-11T00-38-00Z

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

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

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

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

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

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

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

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