PHP-Дайджест № 171 (1 – 13 января 2020) | | ДОСТУПНЫЙ ОТДЫХ
PHP-Дайджест № 171 (1 – 13 января 2020)
Интересное

PHP-Дайджест № 171 (1 – 13 января 2020)

PHP-Дайджест № 171 (1 – 13 января 2020)

Свежая подборка со ссылками на новости и материалы. В выпуске: 4 свежих RFC из PHP Internals и интересные пул-реквесты в PHP 8, порция полезных инструментов, подкасты, стримы и многое другое.

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

PHP-Дайджест № 171 (1 – 13 января 2020) PHP Internals

  • [RFC] Variable Syntax Tweaks — В PHP 7 был исправлен ряд неконсистентностей в синтаксисе переменных Uniform Variable Syntax RFC. Некоторые упущения, связанные с разыменованием, предлагается доисправить в PHP 8.
  • [RFC] Static return type — Ключевое слово static в контексте декларации типа означает позднее статическое связывание. Предлагается сделать возможным его использование в качестве возвращаемого типа методов. Удобно в текучих интерфейсах или статических конструкторах. Скрытый текстclass Test {
    public function doWhatever(): static {
    // Do whatever.
    return $this;
    }
    }
    Для свойств класса и параметров методов это не имеет смысла и работать не будет.
  • [RFC] Allow ::class on objects — В PHP 8 предлагается сделать возможным получение полного имени класса из объекта $object::class по аналогии с тем, как это работает сейчас FooBar::class.
  • [RFC] «use global functions/consts» statement — Если функция или константа используются без префикса, то PHP попытается сначала найти их в текущем неймспейсе, а затем в глобальном. Автор предлагает добавить директивы use global functions; и use global consts;, которые заставят интерпретатор функции и константы без префиксов по-умолчанию искать в глобальном пространстве.
  • [RFC] Weak maps — Предложение принято и WeakMaps будут доступны в PHP 8.

    Несколько изменений доступны в виде пул-реквестов:

  • [PR] Deprecate required param after optional — В данном реализовано предупреждение об использовании обязательного параметра после опционального в сигнатуре функции:
    function test(FooBar $param = null, $param2)
    Раньше это могло иметь смысл, но с nullable типами можно написать function test(?FooBar $param, $param2).
  • [PR] Check abstract method signatures coming from traits — Сигнатуры абстрактных методов из трейтов не валидируются на соответствие реализации. То есть вот такой код сейчас работает без ошибок: Скрытый текстtrait T {
    abstract function neededByTheTrait(int $a, string $b);
    }
    class C {
    use T;
    function neededByTheTrait(array $a, object $b) {}
    }
    Пул-реквест исправляет это поведение.
  • [PR] Ensure correct signatures for PHP magic methods — А в этом PR, реализована проверка сигнатур магических методов. На данный момент она есть только для __toString() и __clone(), а вот такое, например, работает без ошибок: Скрытый текстclass Foo {
    function __get(int $name) {}
    }

    (new Foo)->{42};

PHP-Дайджест № 171 (1 – 13 января 2020) Инструменты

  • nikic/PHP-Fuzzer — Экспериментальный фазер для PHP-библиотек от Никиты Попова. Инструмент генерирует случайные входные данные для функций и может помочь найти неожиданные баги.
  • lukanetconsult/network-address-types — Набор типов для представления сетевых адресов в PHP.
  • carlosas/phpat — Статический анализатор для тестирования архитектуры. Предоставляет набор селекторов и правил.
  • maglnet/ComposerRequireChecker — Инструмент проверит, что все используемые зависимости вашего проекта указаны явно в composer.json.
  • php-service-bus/service-bus — Фреймворк на базе Amphp для построения приложений с использованием паттернов Saga, CQRS, EventSourcing, Message Bus.
  • tigitz/php-spellchecker — Обёртка для проверки текста на ошибки набором разных спелл-чекеров.
  • franzliedke/studio — Инструмент для разработки Composer пакетов при одновременном использовании.

PHP-Дайджест № 171 (1 – 13 января 2020) Symfony

  • Symfony стал фреймворком с наибольшим числом контрибьюторов в 2019
  • Обзор 2010х Symfony
  • Неделя Symfony #680 (6-12 Января 2020)

PHP-Дайджест № 171 (1 – 13 января 2020) Laravel

  • laravel/airlock — Ранняя версия пакета от Тейлора для аутентификации в SPA. Вводный пост об использовании.
  • Используем GitHub Actions для запуска тестов Laravel-проекта на разных версиях PHP и с разными версиями зависимостей.
  • PHP-Дайджест № 171 (1 – 13 января 2020) Как избежать больших сигнатур функций с помощью отложенных объектов
  • PHP-Дайджест № 171 (1 – 13 января 2020) Руководства по ролям и правам в Laravel
  • PHP-Дайджест № 171 (1 – 13 января 2020) Как разделить роли в проекте на Laravel: обзорное сравнение RBAC-пакетов
  • PHP-Дайджест № 171 (1 – 13 января 2020) Laravel. Локализованный роутинг
  • PHP-Дайджест № 171 (1 – 13 января 2020) Laravel Snippet #21 — Artisan Inspire, Vapor multi-domain support, Laravel Airlock.

PHP-Дайджест № 171 (1 – 13 января 2020) Zend / Laminas

  • Новости Laminas — Завершена миграция Zend Framework, всех пакетов и проектов в https://github.com/laminas.

CMS

  • PHP-Дайджест № 171 (1 – 13 января 2020) Друпал-дайджест — 2019/декабрь
  • PHP-Дайджест № 171 (1 – 13 января 2020) Видеокурс по Magento 2 для новичков

PHP-Дайджест № 171 (1 – 13 января 2020) Материалы для обучения

  • Правила работы с динамическими массивами и классами коллекций
  • Как разрабатывать и отлаживать PHP-приложения в Kubernetes
  • Nicolas Grekas: О проблемах хеширования паролей на стороне сервера
  • Как сломать целую экосистему, опубликовав релиз — история обновления doctrine/persistence. Автор ссылается на статью о том, как задепрекейтить тип в PHP.
  • Бенчмарки PHP 5.6 – 7.4 на WordPress, Drupal, Magento 2, Laravel, Symfony и др. (без предзагрузки).
  • Бенчмарки предзагрузки в PHP 7.4 на Laravel.
  • PHP-Дайджест № 171 (1 – 13 января 2020) Google хоронит расширение PHP IMAP
  • PHP-Дайджест № 171 (1 – 13 января 2020) Перевод PHP бэкенда на шину Redis streams и выбор независимой от фреймворков библиотеки.
  • PHP-Дайджест № 171 (1 – 13 января 2020) Решение типовых проблем с json_encode
  • PHP-Дайджест № 171 (1 – 13 января 2020) Зачем ограничивать наследование с помощью final?

PHP-Дайджест № 171 (1 – 13 января 2020) Аудио/Видео

  • PHP-Дайджест № 171 (1 – 13 января 2020)PHP-Дайджест № 171 (1 – 13 января 2020) SDCast #111: В гостях Сергей Жук, разработчик из Skyeng — про удалённую работу, публичную активность разработчиков и асинхронный PHP.
  • PHP-Дайджест № 171 (1 – 13 января 2020) The Undercover ElePHPant #5 — Integrating with Third-Party APIs with Nils Adermann (Composer) об интеграции со сторонними API. Основные моменты в тексте.
  • PHP-Дайджест № 171 (1 – 13 января 2020) Рефакторинг сложных условных выражений
  • PHP-Дайджест № 171 (1 – 13 января 2020) Как запускать тесты PHPUnit в PhpStorm — Также в виде блог поста.
  • PHP-Дайджест № 171 (1 – 13 января 2020) Про Single Responsibility (SOLID) от Anna Filina.
  • PHP-Дайджест № 171 (1 – 13 января 2020) The PHP Song 🙂

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

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

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

Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 170

Источник

Читать  Свежий фотошоп-троллинг от Джеймса Фридмана (9 фото)

I heart FeedBurner