Свежая подборка со ссылками на новости и материалы. В выпуске:
PHP 8.0 RC 1 и переименование параметров внутренних функций,
PhpStorm 2020.3 EAP, многострочные короткие лямбды, атрибуты для
групп свойств и другие новости PHP Internals, порция полезных
инструментов, статьи, стримы, подкасты.
Приятного чтения!
Новости и релизы
-
PHP 8.0.0 RC 1 Стартовал цикл
релиз-кандидатов ветки 8. Запланировано 4 выпуска и второй
релиз-кандидат ожидается 15 октября.
Усилия core-команды сосредоточены на пересмотре имен аргументов во всех модулях. Пример переименований в PDO. За ходом можно наблюдать здесь. - PhpStorm 2020.3 EAP Стартовала программа раннего доступа. Уже реализована полная поддержка PHP 8 поможет быстро сделать пакеты совместимыми с новой версией интерпретатора. Запланированы Xdebug 3, PHPStan/Psalm (в следующих билдах), интеграция Guzzle с HTTP-клиентом и другие фичи.
- PHP 7.2.34
- PHP 7.3.23
- PHP 7.4.11
- phpcommunity.ru PHP-митапы, чаты и ютуб-каналы.
- Традиционный Hacktoberfest с возможностью получить футболку за 4
пул-реквеста в открытые проекты пошел в этом году не по плану.
Какой-то ютубер опубликовал инструкцию и показал, как делать примитивные пул-реквесты с изменениями в readme. Посыпался шквал бессмысленных PR. В итоге DigitalOcean теперь учитывают пул-реквесты только в те репозитории, у которых авторы явно указан топикhacktoberfest
.
Если вы хотите поучаствовать в опенсорсе и получить футболку, то вот инструкция как сделать хороший пул-реквест и список и issues с тегом #hacktoberfest в PHP-проектах.
PHP Internals
-
[PR] Attributes on property groups
Атрибуты можно будет указывать сразу для группы свойств, а не
только по одному, так же как это работает для модификаторов
доступа.
class FooBar { #[NonNegative] public int $x, $y, $z;}
-
[PR] Attributes and strict types Также
атрибуты будут принимать во внимание директиву
strict_types=1
. -
[PR] OPCache: Direct execution opcode file without
php source code file Концепт в виде в PR, в котором
автор предлагает сделать возможным сохранять бинарный файл опкеша и
запускать его уже без исходника. По сути, это что-то напоминающее
подход в Java или очень похожее на питоновские файлы
.pyc / .pyo
.
Теоретически, в этом случае можно было бы распространять предварительно скомпилированный PHP-код без исходников. Типа как.phar
, но уже интерпретированный.
Но в обсуждении указали на проблемы такого подхода. Формат опкода в PHP нестабилен и несовместим от версии к версии. Причем даже в рамках патч-релизов, то есть код скомпилированный на PHP 7.4.22 может просто свалиться с segfault на PHP 7.4.23. А сделать его стабильным маловероятно. -
[PR] Multiline arrow functions Короткие
лямбды, добавленные в PHP 7.4, могут содержать только одно
выражение. В этом пул-реквесте представлена реализация
многострочных коротких лямбд:
$guests = array_filter($users, fn ($user) => { $guest = $repository->findByUserId($user->id); return $guest !== null && in_array($guest->id, $guestsIds);});
Из явных преимуществ по сравнению с обычными лямбдами можно отметить автоматический захват скоупа, то есть не надо добавлятьuse
.
Также остается открытым вопрос синтаксиса, а именно стоит ли добавлять стрелку=>
:fn() => {}
fn() {}
Инструменты
- thephpleague/event 3.0.0 Популярный пакет для событий теперь совместим с PSR-14.
- terrylinooo/simple-cache Драйверы кеша по стандарту PSR-16 для хранения в файлах, Redis, MySQL, SQLite, APC, APCu, Memcache, Memcached и WinCache.
- Code With Me (EAP) В тестовом режиме доступен плагин для совместной работы в IDE от JetBrains.
- Bolt 4.0 Обновление популярной CMS на Symfony- компонентах.
Symfony
-
В Symfony 5.2 будут атрибуты PHP 8 Например:
#[Route('/path', name: 'action')]
для роутов,#[Required]
для указания требуемых зависимостей. - Динамическое изменение уровня логирования в приложениях Symfony.
- Неделя Symfony #718 (28 сентября 4 октября 2020)
Laravel
- spatie/laravel-typescript-transformer Транслирует типы из PHP в Typescript для использования на фронтенде. Подробнее о мотивации в посте.
- Система управления иерархическими древовидными комментариями для Laravel drandin/closure-table-comments
- Сделайте свое приложение масштабируемым, оптимизировав производительность ORM
- Новинки Laravel 8
- Laravel Jetstream новый скаффолдинг для фреймворка
- LaravelДайджест (28 сентября 4 октября 2020)
- Обновленные гайдлайны по PHP и Laravel от Spatie
- Laravel Worldwide Meetup #3: Yaz Jallad и Адель Фаизрахманов Адель рассказывает про разработку плагинов для PhpStorm. Более подробный доклад от него ждем на PHP Russia.
Yii
- W3C откажется от WordPress и будут использовать CraftCMS, который сделан на базе Yii 2. Сама новость не была бы такой интересной без отличного документа о том, какие аспекты принимались во внимание при выборе.
Async PHP
- micc83/mailamie Простой SMTP-сервер для тестирования отправки почты. Реализован на ReactPHP.
Материалы для обучения
- Какая же цветовая схема IDE лучше, светлая или темная? Судя по исследованиям, лучше использовать светлую тему.
-
Анализ использований оператора подавления ошибок
@
. - Как статические методы убивают тебя хуже, чем коронавирус.
- .gitattributes для PHP-проектов.
- Почему не PHP? Вдохновившись статьей Почему не Rust, автор Psalm написал о главных проблемах PHP на его взгляд. А заканчивает статью фразой: theres never been a better time to start a new PHP project.
- Валидация в PHP. Красота или лапша?
- Собеседование php-developer в 2020.
Аудио/Видео
- Профилирование PHP-приложений с помощью Xdebug Cтрим с автором Xdebug.
- Туториал по работе c rectorphp/rector.
- Подкаст Между скобок 11 В гостях Валентин Удальцов (Пых) рассказывает почему PHP пошел в сторону строгой типизации, для чего нужны статические анализаторы и как они работают, и про будущее статических анализаторов.
- Рефакторинг в стиле ниндзя и другие приемчики Крутой стрим в котором Валентин Удальцов и Леонид Корсаков показывают как рефакторили компонент валидации из Yii 3 и вместе с ведущими Александром Макаровым и Валентином Назаровым обсуждают проблемы рефакторинга в целом.
- Компиляция и тест-драйв PHP 8 Brent Roose и Freek Van der Herten пробуют новые фичи языка на стриме.
Спасибо за внимание!
Если вы заметили ошибку или неточность сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
Предыдущий выпуск: PHP-Дайджест 188