PHP-Дайджест № 165 (23 сентября – 7 октября 2019)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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



Новости и релизы


  • GitHub добавил поддержку графа зависимостей PHP — Файлы composer.json будут автоматически анализироваться на предмет небезопасных зависимостей. а репозитории получать соответствующие пул-реквесты с обновлениями.
  • PHP-FIG нужна ваша помощь для обновления PSR-стандартов! — Группа PHP-FIG предлагает поэтапное добавление деклараций типов для возвращаемых значений и параметров в уже принятых стандартах PSR. Для того чтоб в современных приложениях можно было пользоваться преимуществами типов, но в то же время оставить стандарты доступными для старых приложений.
  • PHP 7.4.0 RC3 — Очередной релиз-кандидат доставлен по расписанию. Осталось всего 3 RC до выхода PHP 7.4. Тем временем доступно руководство по ru миграции с PHP 7.3.x на PHP 7.4.x – спасибо lex111 за перевод.
  • PHP 7.3.10, PHP 7.2.23 — Исправлены ошибок безопасности, всем пользователям рекомендуется обновиться.
  • Ближайшие мероприятия:
    • 19 октября, Ульяновск: Panda Meetup #28 Back-end (PHP)
    • 20 октября, Харьков: ThinkPHP #19
    • 24 октября, Минск: PHP Meetup #30
    • 24 октября, Санкт-Петербург: Symfony St. Petersburg Meetup #7
    • 26 октября, Ростов-на-Дону: PHP митап #1
    • 26 октября, Киев: Symfony Camp UA 2019

PHP Internals


  • [RFC] Object Initializer — Предлагается реализовать синтаксис быстрой инициализации объектов:
    Скрытый текст
    class Car
    {
      public int $yearOfProduction;
      public string $vin;
    }
    
    $car = new Car {
      yearOfProduction = 2019,
      vin = "1FTFW1CVXAFD54385",
    };
    
    $car = new Car {
      yearOfProduction = 2019,
    }; // throws RuntimeException: Initialization of Car class object failed due to missing required properties
    
    Коротко о предложении в посте автора и подробнее в подкасте audio PHP Internals News #30 с ним же.
  • [RFC] Reclassifying engine warnings — Бросаемые нотисы и ворнинги в движке PHP были пересмотрены и по результатам голосования в PHP 8.0 имеем:
    • Переменная не определена: будет бросаться Warning;
    • Обращение к несуществующему индексу в массиве: Warning;
    • Деление на ноль: Исключение, а также будет добавлена функция fdiv(), допускающая деление на ноль;
    • Невалидный аргумент в foreach(): Warning;
    • И все остальные изменения прошли голосование и приняты.
    Подробнее в подкасте audio PHP Internals News #29 c Никитой Поповым.
  • Координация проекта PHP — Пока в Internals разгорались драмы, кое-что хорошее тоже было. Dan Ackroyd создал документ, в котором описаны актуальные задачи и обсуждения проекта. Если вы хотели бы помочь PHP, но не знаете как – этот документ хорошая отправная точка.

Инструменты


  • cycle/orm — Мощная ORM, которую можно использовать и как DataMapper и в стиле ActiveRecord. Доступна подробная документация.
  • ssx/skrub — Пакет для удаления ненужных файлов в зависимостях, может быть полезно для уменьшения Docker-образов.
  • squizlabs/PHP_CodeSniffer 3.5.0 — Обновление c полной поддержкой стандарта PSR-12.
  • infection/infection 0.14.0 — Фреймворк для мутационного тестирования. В новой версии 3 новых мутатора, улучшена производительность, снижено потребление памяти, и другие улучшения.
  • solodkiy/mysql-error-parser — Библиотека для разбора ошибок MySQL. Прислал doctorx.
  • alecrabbit/php-console-spinner — Красивые консольные спиннеры.

Symfony


  • В Symfony добавлен новый компонент String для работы со строками в объектном стиле.
  • Лучшие практики Symfony теперь все в одном месте.
  • habr Геттеры/сеттеры и проблема с инкапсуляцией в Symfony проектах

Laravel


  • spatie/laravel-model-states — Пакет добавляет поддержку состояния в моделях. Совмещает паттерн state и конечные автоматы.
  • Hunternnm/laravel-roadrunner — Простой мост для работы Laravel и Roadrunner. Прислал hunternnm.
  • CI для Laravel 6 на GitHub Actions
  • ru DDD — новый хелпер для отладки в Laravel 6
  • ru Сравнение Inertia.js и Livewire
  • video Серия роликов о тестировании в Laravel
  • video Laracasts: Laravel 6 с нуля

Yii


  • habr YIMP — Панель управления для Yii 2 на Bootstrap 4
  • Yii 2.0.27, Debug 2.1.9 и прогресс по Yii 3, включая интересный эксперимент по использованию cycle/orm в качестве БД-слоя.

Async PHP


  • seregazhuk/php-watcher — Пакет для автоматического рестарта PHP-приложений при изменении файлов. Может быть удобен при разработке демонизированных PHP-приложений.
  • clue/reactphp-docker — Асинхронный клиент для Docker Engine API. Пост в поддержку.
  • video Пишем RESTful API с помощью ReactPHP: Загрузка картинок, Отдаем статику

Материалы для обучения


  • Matthias Noback: Используем phploc для быстрой оценки качества приложения, Part 2
  • doganoo/PHPAlgorithms — Подборка популярных алгоритмов из книги «Cracking the Coding Interview» с реализацией на PHP.
  • Самые популярные магические методы в PHP проектах
  • Подробно о том, что такое абстракции в разработке
  • gabrielrcouto/awesome-php-ffi — Примеры использования FFI из PHP 7.4.
  • Проверка иммутабельности с помощью Psalm
  • Больше чем RCE или несколько способов эксплуатации уязвимостей unserialize().
  • ru Четыре столпа PSR
  • habr PHP-библиотеки для e-commerce: работа с АТОЛ и Payture, парсинг кодов GS1 и другие задачи.
  • habr Странные они, статические переменные в PHP
  • habr PHP Xdebug proxy: когда стандартных возможностей Xdebug не хватает.
  • habr Code style как стандарт разработки
  • habr PHP, почём абстракции для народа?

Аудио/Видео


  • videoru Грамотное ООП — Видео доклада с PHP Russia 2019
  • videohabr Производительность PHP-бэкенда. Видео с Badoo PHP Meetup #3
  • video Стрим от Derick Rethans, в котором он фиксит баг в Xdebug.
  • audio PHP Internals News #28 — С Andreas Heigl о переносе документации PHP bp SVN в Git.
  • audio PHP Internals News #27 — С Никитой Поповым о необходимой помощи в добавлении типов к внутренним функциям.
  • audioru Пятиминутка PHP:
    • #68 Drupal — О современном положении дел в популярной CMS системе Drupal.
    • DDD #5 — Value-Objects
    • DDD #6 — Services & Modules
    • DDD #7 — Парадигмы моделирования и многоуровневая архитектура

Занимательное


  • ElePHPant.me — Сайт для обмена слониками.

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

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

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

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

Источник: https://habr.com/ru/post/470373/


Интересные статьи

Интересные статьи

Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Есть несколько способов добавить водяной знак в Битрикс. Рассмотрим два способа.
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.
Одной из «киллер-фич» 12й версии Битрикса была объявлена возможность отдавать статические файлы из CDN, тем самым увеличивая скорость работы сайта. Попробуем оценить практический выигрыш от использова...